From f826a13531bbe43fae6b0d3174316556a51d6237 Mon Sep 17 00:00:00 2001 From: ninjazhou <843520313@qq.com> Date: Mon, 25 May 2026 14:16:41 +0800 Subject: [PATCH 1/2] [fix][client-cpp] Fix TypedMessageTest to use receiveAsync template overload with decoder --- tests/TypedMessageTest.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/TypedMessageTest.cc b/tests/TypedMessageTest.cc index 9a61bfeb..82740b74 100644 --- a/tests/TypedMessageTest.cc +++ b/tests/TypedMessageTest.cc @@ -65,15 +65,16 @@ TEST(TypedMessageTest, testReceive) { ASSERT_EQ(ResultOk, consumer.receive(msg, 3000, intDecoder)); } else { Latch latch{1}; - consumer.receiveAsync( + consumer.receiveAsync( [&latch, &msg, &msgMutex](Result result, const TypedMessage& receivedMsg) { ASSERT_EQ(ResultOk, result); { std::lock_guard lock{msgMutex}; - msg = TypedMessage{receivedMsg, intDecoder}; + msg = receivedMsg; } latch.countdown(); - }); + }, + intDecoder); ASSERT_TRUE(latch.wait(std::chrono::seconds(1))); } From e2cd786ce38d270e2e8a56e2e3abf4d96d0be072 Mon Sep 17 00:00:00 2001 From: ninjazhou <843520313@qq.com> Date: Mon, 25 May 2026 17:05:35 +0800 Subject: [PATCH 2/2] [fix][test] Store receiveAsync callback in lvalue to clarify lifetime semantics --- tests/TypedMessageTest.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/TypedMessageTest.cc b/tests/TypedMessageTest.cc index 82740b74..4e416b87 100644 --- a/tests/TypedMessageTest.cc +++ b/tests/TypedMessageTest.cc @@ -65,7 +65,7 @@ TEST(TypedMessageTest, testReceive) { ASSERT_EQ(ResultOk, consumer.receive(msg, 3000, intDecoder)); } else { Latch latch{1}; - consumer.receiveAsync( + std::function&)> callback = [&latch, &msg, &msgMutex](Result result, const TypedMessage& receivedMsg) { ASSERT_EQ(ResultOk, result); { @@ -73,8 +73,8 @@ TEST(TypedMessageTest, testReceive) { msg = receivedMsg; } latch.countdown(); - }, - intDecoder); + }; + consumer.receiveAsync(callback, intDecoder); ASSERT_TRUE(latch.wait(std::chrono::seconds(1))); }