summaryrefslogtreecommitdiffstats
path: root/src/server/events
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/events')
-rw-r--r--src/server/events/Get.cpp10
-rw-r--r--src/server/events/RegisterClient.cpp70
-rw-r--r--src/server/events/RegisterClient.hpp53
-rw-r--r--src/server/events/UnregisterClient.cpp52
-rw-r--r--src/server/events/UnregisterClient.hpp51
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