diff options
Diffstat (limited to 'src/server/events/Get.cpp')
-rw-r--r-- | src/server/events/Get.cpp | 112 |
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, |