summaryrefslogtreecommitdiffstats
path: root/src/server/events/Get.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-02-08 07:02:59 +0000
committerDavid Robillard <d@drobilla.net>2015-02-08 07:02:59 +0000
commit0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f (patch)
tree1ed4df4df4c3f160120544d92c681f1b4519e1aa /src/server/events/Get.cpp
parent8733afb7ae9a04f46ac6318667182da16eca9fe5 (diff)
downloadingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.tar.gz
ingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.tar.bz2
ingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.zip
Server-side copy paste with LV2 state support.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5541 a436a847-0d15-0410-975c-d299462d15a1
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());
}
}
}