@@ -40,6 +40,12 @@ struct ResponseTracker
4040 bool complete;
4141};
4242
43+ struct TestPublishEvent
44+ {
45+ Aws::Crt::String topic;
46+ Aws::Crt::String payload;
47+ };
48+
4349struct TestState
4450{
4551 TestState (Aws::Crt::Allocator *allocator) : allocator(allocator) {}
@@ -54,7 +60,7 @@ struct TestState
5460 Aws::Crt::Vector<std::shared_ptr<ResponseTracker>> responseTrackers;
5561
5662 Aws::Crt::Vector<Aws::Iot::RequestResponse::SubscriptionStatusEvent> subscriptionStatusEvents;
57- Aws::Crt::Vector<Aws::Crt::String > incomingPublishEvents;
63+ Aws::Crt::Vector<TestPublishEvent > incomingPublishEvents;
5864};
5965
6066static void s_waitForConnected (struct TestState *state)
@@ -168,17 +174,20 @@ static void s_onIncomingPublishEvent(Aws::Iot::RequestResponse::IncomingPublishE
168174 {
169175 std::unique_lock<std::mutex> lock (state->lock );
170176
177+ auto topicCursor = event.GetTopic ();
178+ Aws::Crt::String topicAsString ((const char *)topicCursor.ptr , topicCursor.len );
179+
171180 auto payloadCursor = event.GetPayload ();
172181 Aws::Crt::String payloadAsString ((const char *)payloadCursor.ptr , payloadCursor.len );
173182
174- state->incomingPublishEvents .push_back (payloadAsString);
183+ state->incomingPublishEvents .push_back ({ std::move (topicAsString), std::move ( payloadAsString)} );
175184 }
176185 state->signal .notify_one ();
177186}
178187
179188static void s_waitForIncomingPublishWithPredicate (
180189 TestState *state,
181- const std::function<bool (const Aws::Crt::String &)> &predicate)
190+ const std::function<bool (const TestPublishEvent &)> &predicate)
182191{
183192 {
184193 std::unique_lock<std::mutex> lock (state->lock );
@@ -189,7 +198,7 @@ static void s_waitForIncomingPublishWithPredicate(
189198 return std::any_of (
190199 state->incomingPublishEvents .cbegin (),
191200 state->incomingPublishEvents .cend (),
192- [=](const Aws::Crt::String &payload ) { return predicate (payload ); });
201+ [=](const TestPublishEvent &publishEvent ) { return predicate (publishEvent ); });
193202 });
194203 }
195204}
@@ -1077,7 +1086,9 @@ static int s_doShadowUpdatedStreamIncomingPublishTest(Aws::Crt::Allocator *alloc
10771086 s_publishToProtocolClient (context, uuid, s_publishPayload, allocator);
10781087
10791088 s_waitForIncomingPublishWithPredicate (
1080- &state, [](const Aws::Crt::String &payload) { return payload == Aws::Crt::String (s_publishPayload); });
1089+ &state,
1090+ [&uuid](const TestPublishEvent &publishEvent)
1091+ { return publishEvent.topic == uuid && publishEvent.payload == Aws::Crt::String (s_publishPayload); });
10811092
10821093 return AWS_OP_SUCCESS;
10831094}
0 commit comments