From 8768c927968c2541bcac763d9a4f237081eaca4b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 3 Oct 2011 02:18:42 +0000 Subject: Remove static PortType enumeration from public/client side interface. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3523 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/events/CreatePort.cpp | 35 ++++++++++++++++++++++++++++++----- src/server/events/CreatePort.hpp | 9 +++------ src/server/events/SetMetadata.cpp | 12 +++++++----- 3 files changed, 40 insertions(+), 16 deletions(-) (limited to 'src/server/events') diff --git a/src/server/events/CreatePort.cpp b/src/server/events/CreatePort.cpp index 5c3ecbd2..c6d7c296 100644 --- a/src/server/events/CreatePort.cpp +++ b/src/server/events/CreatePort.cpp @@ -46,21 +46,46 @@ CreatePort::CreatePort( SharedPtr request, SampleCount timestamp, const Raul::Path& path, - const Raul::URI& type, bool is_output, const Resource::Properties& properties) : QueuedEvent(engine, request, timestamp) , _path(path) - , _type(type) - , _is_output(is_output) - , _data_type(type) + , _data_type(PortType::UNKNOWN) , _patch(NULL) , _patch_port(NULL) + , _ports_array(NULL) , _driver_port(NULL) , _properties(properties) + , _is_output(is_output) { - if (_data_type == PortType::UNKNOWN) + const Ingen::Shared::LV2URIMap& uris = *_engine.world()->uris().get(); + + typedef Resource::Properties::const_iterator Iterator; + typedef std::pair Range; + const Range types = properties.equal_range(uris.rdf_type); + for (Iterator i = types.first; i != types.second; ++i) { + const Raul::Atom& type = i->second; + if (type.type() != Atom::URI) { + warn << "Non-URI port type " << type << endl; + continue; + } + + if (type == uris.lv2_AudioPort) { + _data_type = PortType::AUDIO; + } else if (type == uris.lv2_ControlPort) { + _data_type = PortType::CONTROL; + } else if (type == uris.ev_EventPort) { + _data_type = PortType::EVENTS; + } else if (type == uris.atom_ValuePort) { + _data_type = PortType::VALUE; + } else if (type == uris.atom_MessagePort) { + _data_type = PortType::MESSAGE; + } + } + + if (_data_type == PortType::UNKNOWN) { _error = UNKNOWN_TYPE; + } } void diff --git a/src/server/events/CreatePort.hpp b/src/server/events/CreatePort.hpp index 56c0f0a0..4b1b03fa 100644 --- a/src/server/events/CreatePort.hpp +++ b/src/server/events/CreatePort.hpp @@ -21,9 +21,9 @@ #include "raul/Array.hpp" #include "raul/Path.hpp" -#include "ingen/PortType.hpp" #include "ingen/Resource.hpp" +#include "PortType.hpp" #include "QueuedEvent.hpp" namespace Ingen { @@ -47,7 +47,6 @@ public: SharedPtr request, SampleCount timestamp, const Raul::Path& path, - const Raul::URI& type, bool is_output, const Resource::Properties& properties); @@ -65,15 +64,13 @@ private: Raul::Path _path; Raul::URI _type; - bool _is_output; PortType _data_type; PatchImpl* _patch; PortImpl* _patch_port; Raul::Array* _ports_array; ///< New (external) ports array for Patch DriverPort* _driver_port; ///< Driver (eg Jack) port if this is a toplevel port - bool _succeeded; - - Resource::Properties _properties; + Resource::Properties _properties; + bool _is_output; }; } // namespace Server diff --git a/src/server/events/SetMetadata.cpp b/src/server/events/SetMetadata.cpp index bef968fc..4e40baeb 100644 --- a/src/server/events/SetMetadata.cpp +++ b/src/server/events/SetMetadata.cpp @@ -16,11 +16,12 @@ */ #include + #include + #include "raul/log.hpp" #include "raul/Maid.hpp" -#include "ingen/PortType.hpp" -#include "shared/LV2URIMap.hpp" + #include "ClientBroadcaster.hpp" #include "ControlBindings.hpp" #include "CreateNode.hpp" @@ -33,9 +34,11 @@ #include "PatchImpl.hpp" #include "PluginImpl.hpp" #include "PortImpl.hpp" +#include "PortType.hpp" #include "Request.hpp" #include "SetMetadata.hpp" #include "SetPortValue.hpp" +#include "shared/LV2URIMap.hpp" #define LOG(s) s << "[SetMetadata] " @@ -120,8 +123,7 @@ SetMetadata::pre_process() if (is_graph_object && !_object) { Path path(_subject.str()); bool is_patch = false, is_node = false, is_port = false, is_output = false; - PortType data_type(PortType::UNKNOWN); - Shared::ResourceImpl::type(uris, _properties, is_patch, is_node, is_port, is_output, data_type); + Shared::ResourceImpl::type(uris, _properties, is_patch, is_node, is_port, is_output); // Create a separate request without a source so EventSource isn't unblocked twice SharedPtr sub_request(new Request(NULL, _request->client(), _request->id())); @@ -139,7 +141,7 @@ SetMetadata::pre_process() path, p->second.get_uri(), _properties); } else if (is_port) { _create_event = new CreatePort(_engine, sub_request, _time, - path, data_type.uri(), is_output, _properties); + path, is_output, _properties); } if (_create_event) { _create_event->pre_process(); -- cgit v1.2.1