diff options
Diffstat (limited to 'src/server/events')
-rw-r--r-- | src/server/events/Get.cpp | 10 | ||||
-rw-r--r-- | src/server/events/RegisterClient.cpp | 70 | ||||
-rw-r--r-- | src/server/events/RegisterClient.hpp | 53 | ||||
-rw-r--r-- | src/server/events/UnregisterClient.cpp | 52 | ||||
-rw-r--r-- | src/server/events/UnregisterClient.hpp | 51 |
5 files changed, 10 insertions, 226 deletions
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp index 08ac3e10..605e392a 100644 --- a/src/server/events/Get.cpp +++ b/src/server/events/Get.cpp @@ -18,6 +18,7 @@ #include "ingen/ClientInterface.hpp" #include "ClientBroadcaster.hpp" +#include "Driver.hpp" #include "Engine.hpp" #include "EngineStore.hpp" #include "Get.hpp" @@ -67,6 +68,15 @@ Get::post_process() if (_request_client) { _engine.broadcaster()->send_plugins_to(_request_client, _plugins); } + } else if (_uri == "ingen:engine") { + // TODO: Keep a proper RDF model of the engine + if (_request_client) { + Shared::URIs& uris = *_engine.world()->uris().get(); + _request_client->set_property( + uris.ingen_engine, + uris.ingen_sampleRate, + uris.forge.make(int32_t(_engine.driver()->sample_rate()))); + } } else if (!_object && !_plugin) { respond(NOT_FOUND); } else if (_request_client) { diff --git a/src/server/events/RegisterClient.cpp b/src/server/events/RegisterClient.cpp deleted file mode 100644 index 088cf296..00000000 --- a/src/server/events/RegisterClient.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* This file is part of Ingen. - * Copyright 2007-2011 David Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "ingen/shared/LV2URIMap.hpp" -#include "ingen/shared/URIs.hpp" - -#include "ClientBroadcaster.hpp" -#include "Driver.hpp" -#include "Engine.hpp" -#include "events/RegisterClient.hpp" - -using namespace Raul; - -namespace Ingen { -namespace Server { -namespace Events { - -RegisterClient::RegisterClient(Engine& engine, - ClientInterface* client, - int32_t id, - SampleCount timestamp, - const URI& uri) - : Event(engine, client, id, timestamp) - , _uri(uri) -{ -} - -void -RegisterClient::pre_process() -{ - _engine.broadcaster()->register_client(_uri, _request_client); - - Event::pre_process(); -} - -void -RegisterClient::post_process() -{ - respond(SUCCESS); - - /* Tell the client the engine's sample rate (which it needs to know to - interpret control bounds for lv2:sampleRate ports). This is a bit of a - kludge. TODO: keep a proper RDF model to describe the engine and send - that to clients. - */ - const Ingen::Shared::URIs& uris = *_engine.world()->uris().get(); - _request_client->set_property( - uris.ingen_engine, - uris.ingen_sampleRate, - _engine.world()->forge().make(int32_t(_engine.driver()->sample_rate()))); -} - -} // namespace Server -} // namespace Ingen -} // namespace Events - diff --git a/src/server/events/RegisterClient.hpp b/src/server/events/RegisterClient.hpp deleted file mode 100644 index 0f82a33d..00000000 --- a/src/server/events/RegisterClient.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is part of Ingen. - * Copyright 2007-2011 David Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef INGEN_EVENTS_REGISTERCLIENT_HPP -#define INGEN_EVENTS_REGISTERCLIENT_HPP - -#include "raul/URI.hpp" -#include "ingen/ClientInterface.hpp" -#include "Event.hpp" - -namespace Ingen { -namespace Server { -namespace Events { - -/** Registers a new client with the OSC system, so it can receive updates. - * - * \ingroup engine - */ -class RegisterClient : public Event -{ -public: - RegisterClient(Engine& engine, - ClientInterface* client, - int32_t id, - SampleCount timestamp, - const Raul::URI& uri); - - void pre_process(); - void post_process(); - -private: - Raul::URI _uri; -}; - -} // namespace Server -} // namespace Ingen -} // namespace Events - -#endif // INGEN_EVENTS_REGISTERCLIENT_HPP diff --git a/src/server/events/UnregisterClient.cpp b/src/server/events/UnregisterClient.cpp deleted file mode 100644 index a673c25a..00000000 --- a/src/server/events/UnregisterClient.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* This file is part of Ingen. - * Copyright 2007-2011 David Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "ingen/ClientInterface.hpp" -#include "UnregisterClient.hpp" -#include "Engine.hpp" -#include "ClientBroadcaster.hpp" - -using namespace Raul; - -namespace Ingen { -namespace Server { -namespace Events { - -UnregisterClient::UnregisterClient(Engine& engine, - ClientInterface* client, - int32_t id, - SampleCount timestamp, - const URI& uri) - : Event(engine, client, id, timestamp) - , _uri(uri) -{ -} - -void -UnregisterClient::post_process() -{ - if (_engine.broadcaster()->unregister_client(_uri)) { - respond(SUCCESS); - } else { - respond(FAILURE); - } -} - -} // namespace Server -} // namespace Ingen -} // namespace Events - diff --git a/src/server/events/UnregisterClient.hpp b/src/server/events/UnregisterClient.hpp deleted file mode 100644 index 089b8d8e..00000000 --- a/src/server/events/UnregisterClient.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* This file is part of Ingen. - * Copyright 2007-2011 David Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef INGEN_EVENTS_UNREGISTERCLIENT_HPP -#define INGEN_EVENTS_UNREGISTERCLIENT_HPP - -#include "Event.hpp" -#include "raul/URI.hpp" - -namespace Ingen { -namespace Server { -namespace Events { - -/** Unregisters an OSC client so it no longer receives notifications. - * - * \ingroup engine - */ -class UnregisterClient : public Event -{ -public: - UnregisterClient(Engine& engine, - ClientInterface* client, - int32_t id, - SampleCount timestamp, - const Raul::URI& uri); - - void post_process(); - -private: - Raul::URI _uri; -}; - -} // namespace Server -} // namespace Ingen -} // namespace Events - -#endif // INGEN_EVENTS_UNREGISTERCLIENT_HPP |