summaryrefslogtreecommitdiffstats
path: root/src/server/events/Get.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/events/Get.cpp')
-rw-r--r--src/server/events/Get.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp
index c984e576..8a9eb227 100644
--- a/src/server/events/Get.cpp
+++ b/src/server/events/Get.cpp
@@ -100,6 +100,19 @@ Get::Response::put_graph(const GraphImpl* graph)
}
}
+void
+Get::Response::send(Interface* dest)
+{
+ // Sort puts by URI so parents are sent first
+ std::sort(puts.begin(), puts.end());
+ for (const Response::Put& put : puts) {
+ dest->put(put.uri, put.properties, put.ctx);
+ }
+ for (const Response::Connect& connect : connects) {
+ dest->connect(connect.tail, connect.head);
+ }
+}
+
Get::Get(Engine& engine,
SPtr<Interface> client,
int32_t id,
@@ -162,12 +175,7 @@ Get::post_process()
uris.param_sampleRate,
uris.forge.make(int32_t(_engine.driver()->sample_rate())));
} else {
- for (const Response::Put& put : _response.puts) {
- _request_client->put(put.uri, put.properties, put.ctx);
- }
- for (const Response::Connect& connect : _response.connects) {
- _request_client->connect(connect.tail, connect.head);
- }
+ _response.send(_request_client.get());
}
}
}