summaryrefslogtreecommitdiffstats
path: root/src/server/events/Get.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-10-30 17:02:07 +0000
committerDavid Robillard <d@drobilla.net>2015-10-30 17:02:07 +0000
commit8510f80faad7a719a97cf14b1a82a1cc2141282b (patch)
tree11ab0ede29a4a2e29d1e689f6b2cb23ee0da47f1 /src/server/events/Get.cpp
parent2fe35cd17f96a1d393fda203ccaa234b0aa69b16 (diff)
downloadingen-8510f80faad7a719a97cf14b1a82a1cc2141282b.tar.gz
ingen-8510f80faad7a719a97cf14b1a82a1cc2141282b.tar.bz2
ingen-8510f80faad7a719a97cf14b1a82a1cc2141282b.zip
Update clients when plugins are unloaded/reloaded
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5808 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Get.cpp')
-rw-r--r--src/server/events/Get.cpp112
1 files changed, 0 insertions, 112 deletions
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp
index 6d49657d..fa56f23a 100644
--- a/src/server/events/Get.cpp
+++ b/src/server/events/Get.cpp
@@ -34,118 +34,6 @@ namespace Ingen {
namespace Server {
namespace Events {
-void
-Get::Response::put(const Raul::URI& uri,
- const Resource::Properties& props,
- Resource::Graph ctx)
-{
- const Get::Response::Put put = { uri, props, ctx };
- puts.push_back(put);
-}
-
-void
-Get::Response::put_port(const PortImpl* port)
-{
- if (port->is_a(PortType::CONTROL) || port->is_a(PortType::CV)) {
- Resource::Properties props = port->properties();
- props.erase(port->bufs().uris().ingen_value);
- props.insert(std::make_pair(port->bufs().uris().ingen_value,
- port->value()));
- put(port->uri(), props);
- } else {
- put(port->uri(), port->properties());
- }
-}
-
-void
-Get::Response::put_block(const BlockImpl* block)
-{
- const PluginImpl* const plugin = block->plugin_impl();
- const URIs& uris = plugin->uris();
-
- if (uris.ingen_Graph == plugin->type()) {
- put_graph((const GraphImpl*)block);
- } else {
- put(block->uri(), block->properties());
- for (size_t j = 0; j < block->num_ports(); ++j) {
- put_port(block->port_impl(j));
- }
- }
-}
-
-void
-Get::Response::put_graph(const GraphImpl* graph)
-{
- put(graph->uri(),
- graph->properties(Resource::Graph::INTERNAL),
- Resource::Graph::INTERNAL);
-
- put(graph->uri(),
- graph->properties(Resource::Graph::EXTERNAL),
- Resource::Graph::EXTERNAL);
-
- // Enqueue blocks
- for (const auto& b : graph->blocks()) {
- put_block(&b);
- }
-
- // Enqueue ports
- for (uint32_t i = 0; i < graph->num_ports_non_rt(); ++i) {
- put_port(graph->port_impl(i));
- }
-
- // Enqueue arcs
- for (const auto& a : graph->arcs()) {
- const SPtr<const Arc> arc = a.second;
- const Connect connect = { arc->tail_path(), arc->head_path() };
- connects.push_back(connect);
- }
-}
-
-void
-Get::Response::put_plugin(PluginImpl* plugin)
-{
- put(plugin->uri(), plugin->properties());
-
- for (const auto& p : plugin->presets()) {
- put_preset(plugin->uris(), plugin->uri(), p.first, p.second);
- }
-}
-
-void
-Get::Response::put_preset(const URIs& uris,
- const Raul::URI& plugin,
- const Raul::URI& preset,
- const std::string& label)
-{
- Resource::Properties props{
- { uris.rdf_type, uris.pset_Preset.urid },
- { uris.rdfs_label, uris.forge.alloc(label) },
- { uris.lv2_appliesTo, uris.forge.make_urid(plugin) }};
- put(preset, props);
-}
-
-/** Returns true if a is closer to the root than b. */
-static inline bool
-put_higher_than(const Get::Response::Put& a, const Get::Response::Put& b)
-{
- return (std::count(a.uri.begin(), a.uri.end(), '/') <
- std::count(b.uri.begin(), b.uri.end(), '/'));
-}
-
-void
-Get::Response::send(Interface* dest)
-{
- // Sort puts by increasing depth so parents are sent first
- std::stable_sort(puts.begin(), puts.end(), put_higher_than);
- 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,