4343#include < bsl_iostream.h>
4444#include < bsl_sstream.h>
4545#include < bsl_stdexcept.h>
46+ #include < bsl_string_view.h>
4647#include < bsl_vector.h>
4748#include < bslim_printer.h>
4849#include < bslma_allocator.h>
50+ #include < bslma_default.h>
4951#include < bsls_assert.h>
5052#include < bsls_types.h>
5153
@@ -81,25 +83,27 @@ bool isValidSequenceNumber(bsl::ostream& error, const bsl::string& seqNumStr)
8183 return success;
8284}
8385
86+ // / Record types constants
87+ const bsl::string_view k_ALL_TYPE = " all" ;
88+ const bsl::string_view k_MESSAGE_TYPE = " message" ;
89+ const bsl::string_view k_QUEUEOP_TYPE = " queue-op" ;
90+ const bsl::string_view k_JOURNALOP_TYPE = " journal-op" ;
91+ const bsl::string_view k_CSL_ALL_TYPE = " all" ;
92+ const bsl::string_view k_CSL_SNAPSHOT_TYPE = " snapshot" ;
93+ const bsl::string_view k_CSL_UPDATE_TYPE = " update" ;
94+ const bsl::string_view k_CSL_COMMIT_TYPE = " commit" ;
95+ const bsl::string_view k_CSL_ACK_TYPE = " ack" ;
96+ // / Print modes constants
97+ const bsl::string_view k_HUMAN_MODE = " human" ;
98+ const bsl::string_view k_JSON_PRETTY_MODE = " json-pretty" ;
99+ const bsl::string_view k_JSON_LINE_MODE = " json-line" ;
100+
84101} // close unnamed namespace
85102
86103// ==========================
87104// class CommandLineArguments
88105// ==========================
89106
90- const char * CommandLineArguments::k_ALL_TYPE = " all" ;
91- const char * CommandLineArguments::k_MESSAGE_TYPE = " message" ;
92- const char * CommandLineArguments::k_QUEUEOP_TYPE = " queue-op" ;
93- const char * CommandLineArguments::k_JOURNALOP_TYPE = " journal-op" ;
94- const char * CommandLineArguments::k_CSL_ALL_TYPE = " all" ;
95- const char * CommandLineArguments::k_CSL_SNAPSHOT_TYPE = " snapshot" ;
96- const char * CommandLineArguments::k_CSL_UPDATE_TYPE = " update" ;
97- const char * CommandLineArguments::k_CSL_COMMIT_TYPE = " commit" ;
98- const char * CommandLineArguments::k_CSL_ACK_TYPE = " ack" ;
99- const char * CommandLineArguments::k_HUMAN_MODE = " human" ;
100- const char * CommandLineArguments::k_JSON_PRETTY_MODE = " json-pretty" ;
101- const char * CommandLineArguments::k_JSON_LINE_MODE = " json-line" ;
102-
103107CommandLineArguments::CommandLineArguments (bslma::Allocator* allocator)
104108: d_recordType(allocator)
105109, d_cslRecordType(allocator)
@@ -129,14 +133,14 @@ CommandLineArguments::CommandLineArguments(bslma::Allocator* allocator)
129133, d_partiallyConfirmed(false )
130134, d_minRecordsPerQueue(0 )
131135, d_cslSummaryQueuesLimit(0 )
136+ , d_allocator_p(bslma::Default::allocator(allocator))
132137{
133138 // NOTHING
134139}
135140
136- bool CommandLineArguments::validate (bsl::string* error_p,
137- bslma::Allocator* allocator)
141+ bool CommandLineArguments::validate (bsl::string* error_p)
138142{
139- bmqu::MemOutStream ss (allocator );
143+ bmqu::MemOutStream ss (d_allocator_p );
140144
141145 // Determine the mode: journal or CSL iteration.
142146 bool validMode = true ;
@@ -149,19 +153,18 @@ bool CommandLineArguments::validate(bsl::string* error_p,
149153 if (validMode) {
150154 if (!d_cslFile.empty () &&
151155 (d_journalPath.empty () && d_journalFile.empty ())) {
152- validateCslModeArgs (ss, allocator );
156+ validateCslModeArgs (ss);
153157 }
154158 else {
155- validateJournalModeArgs (ss, allocator );
159+ validateJournalModeArgs (ss);
156160 }
157161 }
158162
159163 error_p->assign (ss.str ().data (), ss.str ().length ());
160164 return error_p->empty ();
161165}
162166
163- void CommandLineArguments::validateCslModeArgs (bsl::ostream& stream,
164- bslma::Allocator* allocator)
167+ void CommandLineArguments::validateCslModeArgs (bsl::ostream& stream)
165168{
166169 // Validate record types
167170 if (d_cslRecordType.size () > 4 ) {
@@ -174,7 +177,7 @@ void CommandLineArguments::validateCslModeArgs(bsl::ostream& stream,
174177 " passed.\n " ;
175178 }
176179
177- const bool rangeArgPresent = validateRangeArgs (stream, allocator );
180+ const bool rangeArgPresent = validateRangeArgs (stream);
178181
179182 // Validate options compatibility
180183 if (!d_seqNum.empty () &&
@@ -194,7 +197,7 @@ void CommandLineArguments::validateCslModeArgs(bsl::ostream& stream,
194197 " specific enough to find a particular record\n " ;
195198 }
196199 if (!d_seqNum.empty ()) {
197- bmqu::MemOutStream errorDescr (allocator );
200+ bmqu::MemOutStream errorDescr (d_allocator_p );
198201 for (bsl::vector<bsl::string>::const_iterator cit = d_seqNum.begin ();
199202 cit != d_seqNum.end ();
200203 ++cit) {
@@ -247,8 +250,7 @@ void CommandLineArguments::validateCslModeArgs(bsl::ostream& stream,
247250 " than zero.\n " ;
248251}
249252
250- void CommandLineArguments::validateJournalModeArgs (bsl::ostream& stream,
251- bslma::Allocator* allocator)
253+ void CommandLineArguments::validateJournalModeArgs (bsl::ostream& stream)
252254{
253255 // Validate record types
254256 if (d_recordType.size () > 3 ) {
@@ -316,7 +318,7 @@ void CommandLineArguments::validateJournalModeArgs(bsl::ostream& stream,
316318 " specified\n " ;
317319 }
318320
319- const bool rangeArgPresent = validateRangeArgs (stream, allocator );
321+ const bool rangeArgPresent = validateRangeArgs (stream);
320322
321323 // Validate options compatibility
322324 if (!d_guid.empty () &&
@@ -346,7 +348,7 @@ void CommandLineArguments::validateJournalModeArgs(bsl::ostream& stream,
346348 " specific enough to find a particular message\n " ;
347349 }
348350 if (!d_seqNum.empty ()) {
349- bmqu::MemOutStream errorDescr (allocator );
351+ bmqu::MemOutStream errorDescr (d_allocator_p );
350352 for (bsl::vector<bsl::string>::const_iterator cit = d_seqNum.begin ();
351353 cit != d_seqNum.end ();
352354 ++cit) {
@@ -400,16 +402,15 @@ void CommandLineArguments::validateJournalModeArgs(bsl::ostream& stream,
400402 stream << " Dump limit must be positive value greater than zero.\n " ;
401403}
402404
403- bool CommandLineArguments::validateRangeArgs (bsl::ostream& error,
404- bslma::Allocator* allocator) const
405+ bool CommandLineArguments::validateRangeArgs (bsl::ostream& error) const
405406{
406407 if (d_timestampLt < 0 || d_timestampGt < 0 ||
407408 (d_timestampLt > 0 && d_timestampGt >= d_timestampLt)) {
408409 error << " Invalid timestamp range specified\n " ;
409410 }
410411
411412 if (!d_seqNumLt.empty () || !d_seqNumGt.empty ()) {
412- bmqu::MemOutStream errorDescr (allocator );
413+ bmqu::MemOutStream errorDescr (d_allocator_p );
413414 CompositeSequenceNumber seqNumLt, seqNumGt;
414415 bool successLt = false ;
415416 if (!d_seqNumLt.empty ()) {
@@ -593,6 +594,7 @@ Parameters::Parameters(const CommandLineArguments& arguments,
593594, d_confirmed(arguments.d_confirmed)
594595, d_partiallyConfirmed(arguments.d_partiallyConfirmed)
595596, d_cslSummaryQueuesLimit(arguments.d_cslSummaryQueuesLimit)
597+ , d_allocator_p(bslma::Default::allocator(allocator))
596598{
597599 // Determine processing mode: process Journal or CSL file
598600 if (!arguments.d_cslFile .empty () &&
@@ -601,10 +603,10 @@ Parameters::Parameters(const CommandLineArguments& arguments,
601603 }
602604
603605 // Check print mode
604- if (arguments.d_printMode == CommandLineArguments:: k_JSON_PRETTY_MODE) {
606+ if (arguments.d_printMode == k_JSON_PRETTY_MODE) {
605607 d_printMode = e_JSON_PRETTY;
606608 }
607- else if (arguments.d_printMode == CommandLineArguments:: k_JSON_LINE_MODE) {
609+ else if (arguments.d_printMode == k_JSON_LINE_MODE) {
608610 d_printMode = e_JSON_LINE;
609611 }
610612 // Set record types to process
@@ -618,19 +620,19 @@ Parameters::Parameters(const CommandLineArguments& arguments,
618620 arguments.d_cslRecordType .begin ();
619621 cit != arguments.d_cslRecordType .end ();
620622 ++cit) {
621- if (*cit == CommandLineArguments:: k_CSL_ALL_TYPE) {
623+ if (*cit == k_CSL_ALL_TYPE) {
622624 d_processCslRecordTypes.setAll ();
623625 }
624- else if (*cit == CommandLineArguments:: k_CSL_SNAPSHOT_TYPE) {
626+ else if (*cit == k_CSL_SNAPSHOT_TYPE) {
625627 d_processCslRecordTypes.d_snapshot = true ;
626628 }
627- else if (*cit == CommandLineArguments:: k_CSL_UPDATE_TYPE) {
629+ else if (*cit == k_CSL_UPDATE_TYPE) {
628630 d_processCslRecordTypes.d_update = true ;
629631 }
630- else if (*cit == CommandLineArguments:: k_CSL_COMMIT_TYPE) {
632+ else if (*cit == k_CSL_COMMIT_TYPE) {
631633 d_processCslRecordTypes.d_commit = true ;
632634 }
633- else if (*cit == CommandLineArguments:: k_CSL_ACK_TYPE) {
635+ else if (*cit == k_CSL_ACK_TYPE) {
634636 d_processCslRecordTypes.d_ack = true ;
635637 }
636638 else {
@@ -649,17 +651,17 @@ Parameters::Parameters(const CommandLineArguments& arguments,
649651 arguments.d_recordType .begin ();
650652 cit != arguments.d_recordType .end ();
651653 ++cit) {
652- if (*cit == CommandLineArguments:: k_ALL_TYPE) {
654+ if (*cit == k_ALL_TYPE) {
653655 d_processRecordTypes.setAll ();
654656 break ; // BREAK
655657 }
656- else if (*cit == CommandLineArguments:: k_MESSAGE_TYPE) {
658+ else if (*cit == k_MESSAGE_TYPE) {
657659 d_processRecordTypes.d_message = true ;
658660 }
659- else if (*cit == CommandLineArguments:: k_QUEUEOP_TYPE) {
661+ else if (*cit == k_QUEUEOP_TYPE) {
660662 d_processRecordTypes.d_queueOp = true ;
661663 }
662- else if (*cit == CommandLineArguments:: k_JOURNALOP_TYPE) {
664+ else if (*cit == k_JOURNALOP_TYPE) {
663665 d_processRecordTypes.d_journalOp = true ;
664666 }
665667 else {
@@ -730,10 +732,10 @@ Parameters::Parameters(const CommandLineArguments& arguments,
730732 }
731733}
732734
733- void Parameters::validateQueueNames (bslma::Allocator* allocator ) const
735+ void Parameters::validateQueueNames () const
734736{
735737 // Validate given queue names agains existing in csl file
736- bmqu::MemOutStream ss (allocator );
738+ bmqu::MemOutStream ss (d_allocator_p );
737739 bsl::vector<bsl::string>::const_iterator it = d_queueName.cbegin ();
738740 for (; it != d_queueName.cend (); ++it) {
739741 if (!d_queueMap.findKeyByUri (*it).has_value ()) {
0 commit comments