@@ -40,6 +40,12 @@ struct ResponseTracker
40
40
bool complete;
41
41
};
42
42
43
+ struct TestPublishEvent
44
+ {
45
+ Aws::Crt::String topic;
46
+ Aws::Crt::String payload;
47
+ };
48
+
43
49
struct TestState
44
50
{
45
51
TestState (Aws::Crt::Allocator *allocator) : allocator(allocator) {}
@@ -54,7 +60,7 @@ struct TestState
54
60
Aws::Crt::Vector<std::shared_ptr<ResponseTracker>> responseTrackers;
55
61
56
62
Aws::Crt::Vector<Aws::Iot::RequestResponse::SubscriptionStatusEvent> subscriptionStatusEvents;
57
- Aws::Crt::Vector<Aws::Crt::String > incomingPublishEvents;
63
+ Aws::Crt::Vector<TestPublishEvent > incomingPublishEvents;
58
64
};
59
65
60
66
static void s_waitForConnected (struct TestState *state)
@@ -168,17 +174,20 @@ static void s_onIncomingPublishEvent(Aws::Iot::RequestResponse::IncomingPublishE
168
174
{
169
175
std::unique_lock<std::mutex> lock (state->lock );
170
176
177
+ auto topicCursor = event.GetTopic ();
178
+ Aws::Crt::String topicAsString ((const char *)topicCursor.ptr , topicCursor.len );
179
+
171
180
auto payloadCursor = event.GetPayload ();
172
181
Aws::Crt::String payloadAsString ((const char *)payloadCursor.ptr , payloadCursor.len );
173
182
174
- state->incomingPublishEvents .push_back (payloadAsString);
183
+ state->incomingPublishEvents .push_back ({ std::move (topicAsString), std::move ( payloadAsString)} );
175
184
}
176
185
state->signal .notify_one ();
177
186
}
178
187
179
188
static void s_waitForIncomingPublishWithPredicate (
180
189
TestState *state,
181
- const std::function<bool (const Aws::Crt::String &)> &predicate)
190
+ const std::function<bool (const TestPublishEvent &)> &predicate)
182
191
{
183
192
{
184
193
std::unique_lock<std::mutex> lock (state->lock );
@@ -189,7 +198,7 @@ static void s_waitForIncomingPublishWithPredicate(
189
198
return std::any_of (
190
199
state->incomingPublishEvents .cbegin (),
191
200
state->incomingPublishEvents .cend (),
192
- [=](const Aws::Crt::String &payload ) { return predicate (payload ); });
201
+ [=](const TestPublishEvent &publishEvent ) { return predicate (publishEvent ); });
193
202
});
194
203
}
195
204
}
@@ -1077,7 +1086,9 @@ static int s_doShadowUpdatedStreamIncomingPublishTest(Aws::Crt::Allocator *alloc
1077
1086
s_publishToProtocolClient (context, uuid, s_publishPayload, allocator);
1078
1087
1079
1088
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); });
1081
1092
1082
1093
return AWS_OP_SUCCESS;
1083
1094
}
0 commit comments