@@ -222,12 +222,12 @@ void ClientImpl::handleCreateProducer(const Result result, const LookupDataResul
222222void ClientImpl::handleProducerCreated (Result result, ProducerImplBaseWeakPtr producerBaseWeakPtr,
223223 CreateProducerCallback callback, ProducerImplBasePtr producer) {
224224 if (result == ResultOk) {
225- auto pair = producers_.emplace (producer.get (), producer);
226- if (!pair.second ) {
227- auto existingProducer = pair.first ->second .lock ();
225+ auto address = producer.get ();
226+ auto existingProducer = producers_.putIfAbsent (address, producer);
227+ if (existingProducer) {
228+ auto producer = existingProducer.value ().lock ();
228229 LOG_ERROR (" Unexpected existing producer at the same address: "
229- << pair.first ->first << " , producer: "
230- << (existingProducer ? existingProducer->getProducerName () : " (null)" ));
230+ << address << " , producer: " << (producer ? producer->getProducerName () : " (null)" ));
231231 callback (ResultUnknownError, {});
232232 return ;
233233 }
@@ -311,12 +311,12 @@ void ClientImpl::handleReaderMetadataLookup(const Result result, const LookupDat
311311 reader->start (startMessageId, [this , self](const ConsumerImplBaseWeakPtr& weakConsumerPtr) {
312312 auto consumer = weakConsumerPtr.lock ();
313313 if (consumer) {
314- auto pair = consumers_.emplace (consumer.get (), consumer);
315- if (!pair.second ) {
316- auto existingConsumer = pair.first ->second .lock ();
314+ auto address = consumer.get ();
315+ auto existingConsumer = consumers_.putIfAbsent (address, consumer);
316+ if (existingConsumer) {
317+ consumer = existingConsumer.value ().lock ();
317318 LOG_ERROR (" Unexpected existing consumer at the same address: "
318- << pair.first ->first
319- << " , consumer: " << (existingConsumer ? existingConsumer->getName () : " (null)" ));
319+ << address << " , consumer: " << (consumer ? consumer->getName () : " (null)" ));
320320 }
321321 } else {
322322 LOG_ERROR (" Unexpected case: the consumer is somehow expired" );
@@ -512,12 +512,12 @@ void ClientImpl::handleSubscribe(const Result result, const LookupDataResultPtr
512512void ClientImpl::handleConsumerCreated (Result result, ConsumerImplBaseWeakPtr consumerImplBaseWeakPtr,
513513 SubscribeCallback callback, ConsumerImplBasePtr consumer) {
514514 if (result == ResultOk) {
515- auto pair = consumers_.emplace (consumer.get (), consumer);
516- if (!pair.second ) {
517- auto existingConsumer = pair.first ->second .lock ();
515+ auto address = consumer.get ();
516+ auto existingConsumer = consumers_.putIfAbsent (address, consumer);
517+ if (existingConsumer) {
518+ auto consumer = existingConsumer.value ().lock ();
518519 LOG_ERROR (" Unexpected existing consumer at the same address: "
519- << pair.first ->first
520- << " , consumer: " << (existingConsumer ? existingConsumer->getName () : " (null)" ));
520+ << address << " , consumer: " << (consumer ? consumer->getName () : " (null)" ));
521521 callback (ResultUnknownError, {});
522522 return ;
523523 }
0 commit comments