Skip to content

Commit 5b79214

Browse files
committed
Fixup and test
1 parent 3d62aa0 commit 5b79214

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

source/iot/MqttRequestResponseClient.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ namespace Aws
9090
void *user_data);
9191

9292
static void OnIncomingPublishCallback(
93-
struct aws_byte_cursor response_topic,
9493
struct aws_byte_cursor payload,
94+
struct aws_byte_cursor topic,
9595
void *user_data);
9696

9797
static void OnTerminatedCallback(void *user_data);
@@ -191,8 +191,8 @@ namespace Aws
191191
}
192192

193193
void StreamingOperationImpl::OnIncomingPublishCallback(
194-
struct aws_byte_cursor topic,
195194
struct aws_byte_cursor payload,
195+
struct aws_byte_cursor topic,
196196
void *user_data)
197197
{
198198
auto *handle = static_cast<StreamingOperationImplHandle *>(user_data);

tests/MqttRequestResponse.cpp

+16-5
Original file line numberDiff line numberDiff line change
@@ -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+
4349
struct 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

6066
static 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

179188
static 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

Comments
 (0)