summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/Client.hpp2
-rw-r--r--src/client/ClientStore.cpp6
-rw-r--r--src/client/ClientStore.hpp2
-rw-r--r--src/client/HTTPEngineSender.cpp9
-rw-r--r--src/client/HTTPEngineSender.hpp5
-rw-r--r--src/client/OSCEngineSender.cpp12
-rw-r--r--src/client/OSCEngineSender.hpp5
-rw-r--r--src/client/SigClientInterface.hpp6
-rw-r--r--src/client/ThreadedSigClientInterface.hpp6
-rw-r--r--src/engine/ClientBroadcaster.hpp4
-rw-r--r--src/engine/HTTPClientSender.cpp5
-rw-r--r--src/engine/HTTPClientSender.hpp2
-rw-r--r--src/engine/OSCClientSender.cpp4
-rw-r--r--src/engine/OSCClientSender.hpp2
-rw-r--r--src/engine/OSCEngineReceiver.cpp21
-rw-r--r--src/engine/QueuedEngineInterface.cpp18
-rw-r--r--src/engine/QueuedEngineInterface.hpp5
-rw-r--r--src/engine/events/Delete.cpp13
-rw-r--r--src/engine/events/Delete.hpp10
-rw-r--r--src/gui/BreadCrumbs.cpp4
-rw-r--r--src/gui/BreadCrumbs.hpp2
-rw-r--r--src/shared/ClashAvoider.cpp5
-rw-r--r--src/shared/ClashAvoider.hpp2
23 files changed, 58 insertions, 92 deletions
diff --git a/src/bindings/Client.hpp b/src/bindings/Client.hpp
index 6eaa3dc8..988b941c 100644
--- a/src/bindings/Client.hpp
+++ b/src/bindings/Client.hpp
@@ -18,7 +18,7 @@ public:
void error(const std::string& msg) {}
void put(const Raul::URI& path, const Ingen::Resource::Properties& properties) {}
void connect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path) {}
- void del(const Raul::Path& path) {}
+ void del(const Raul::URI& uri) {}
void move(const Raul::Path& old_path, const Raul::Path& new_path) {}
void disconnect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path) {}
void set_property(const Raul::URI& subject, const Raul::URI& key, const Raul::Atom& value) {}
diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp
index 32e115e6..690a2666 100644
--- a/src/client/ClientStore.cpp
+++ b/src/client/ClientStore.cpp
@@ -201,8 +201,12 @@ ClientStore::add_plugin(SharedPtr<PluginModel> pm)
/* ****** Signal Handlers ******** */
void
-ClientStore::del(const Path& path)
+ClientStore::del(const URI& uri)
{
+ if (!Raul::Path::is_path(uri))
+ return;
+
+ const Raul::Path path(uri.str());
SharedPtr<ObjectModel> removed = remove_object(path);
removed.reset();
LOG(debug) << "Removed object " << path << ", count: " << removed.use_count();
diff --git a/src/client/ClientStore.hpp b/src/client/ClientStore.hpp
index 7bc21b99..dc02a455 100644
--- a/src/client/ClientStore.hpp
+++ b/src/client/ClientStore.hpp
@@ -97,7 +97,7 @@ public:
void disconnect(const Raul::Path& src_port_path,
const Raul::Path& dst_port_path);
- void del(const Raul::Path& path);
+ void del(const Raul::URI& uri);
sigc::signal< void, SharedPtr<ObjectModel> > signal_new_object;
sigc::signal< void, SharedPtr<PluginModel> > signal_new_plugin;
diff --git a/src/client/HTTPEngineSender.cpp b/src/client/HTTPEngineSender.cpp
index e188b010..98c43a12 100644
--- a/src/client/HTTPEngineSender.cpp
+++ b/src/client/HTTPEngineSender.cpp
@@ -78,13 +78,6 @@ HTTPEngineSender::unregister_client(const URI& uri)
{
}
-// Engine commands
-
-void
-HTTPEngineSender::quit()
-{
-}
-
// Object commands
void
@@ -128,7 +121,7 @@ HTTPEngineSender::move(const Path& old_path,
}
void
-HTTPEngineSender::del(const Path& uri)
+HTTPEngineSender::del(const URI& uri)
{
const string path = (uri.substr(0, 6) == "path:/") ? uri.substr(6) : uri.str();
const string full_uri = _engine_url.str() + "/" + path;
diff --git a/src/client/HTTPEngineSender.hpp b/src/client/HTTPEngineSender.hpp
index 549ad07a..b5653273 100644
--- a/src/client/HTTPEngineSender.hpp
+++ b/src/client/HTTPEngineSender.hpp
@@ -72,9 +72,6 @@ public:
void register_client(ClientInterface* client);
void unregister_client(const Raul::URI& uri);
- // Engine commands
- void quit();
-
// Object commands
virtual void put(const Raul::URI& path,
@@ -85,7 +82,7 @@ public:
const Resource::Properties& remove,
const Resource::Properties& add);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
virtual void move(const Raul::Path& old_path,
const Raul::Path& new_path);
diff --git a/src/client/OSCEngineSender.cpp b/src/client/OSCEngineSender.cpp
index 3c9b60b4..9de1192a 100644
--- a/src/client/OSCEngineSender.cpp
+++ b/src/client/OSCEngineSender.cpp
@@ -98,14 +98,6 @@ OSCEngineSender::unregister_client(const URI& uri)
send("/unregister_client", "i", next_id(), LO_ARGS_END);
}
-// Engine commands
-
-void
-OSCEngineSender::quit()
-{
- send("/quit", "i", next_id(), LO_ARGS_END);
-}
-
// Object commands
void
@@ -144,11 +136,11 @@ OSCEngineSender::move(const Path& old_path,
}
void
-OSCEngineSender::del(const Path& path)
+OSCEngineSender::del(const URI& uri)
{
send("/delete", "is",
next_id(),
- path.c_str(),
+ uri.c_str(),
LO_ARGS_END);
}
diff --git a/src/client/OSCEngineSender.hpp b/src/client/OSCEngineSender.hpp
index 75cf3db1..98d2d40c 100644
--- a/src/client/OSCEngineSender.hpp
+++ b/src/client/OSCEngineSender.hpp
@@ -73,9 +73,6 @@ public:
void register_client(ClientInterface* client);
void unregister_client(const Raul::URI& uri);
- // Engine commands
- void quit();
-
// Object commands
virtual void put(const Raul::URI& path,
@@ -86,7 +83,7 @@ public:
const Resource::Properties& remove,
const Resource::Properties& add);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
virtual void move(const Raul::Path& old_path,
const Raul::Path& new_path);
diff --git a/src/client/SigClientInterface.hpp b/src/client/SigClientInterface.hpp
index 26a64f85..17cd8556 100644
--- a/src/client/SigClientInterface.hpp
+++ b/src/client/SigClientInterface.hpp
@@ -55,7 +55,7 @@ public:
sigc::signal<void, Raul::URI, Resource::Properties,
Resource::Properties> signal_delta;
sigc::signal<void, Raul::Path, Raul::Path> signal_object_moved;
- sigc::signal<void, Raul::Path> signal_object_deleted;
+ sigc::signal<void, Raul::URI> signal_object_deleted;
sigc::signal<void, Raul::Path, Raul::Path> signal_connection;
sigc::signal<void, Raul::Path, Raul::Path> signal_disconnection;
sigc::signal<void, Raul::URI, Raul::URI, Raul::Atom> signal_variable_change;
@@ -100,8 +100,8 @@ protected:
void connect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path)
{ EMIT(connection, src_port_path, dst_port_path); }
- void del(const Raul::Path& path)
- { EMIT(object_deleted, path); }
+ void del(const Raul::URI& uri)
+ { EMIT(object_deleted, uri); }
void move(const Raul::Path& old_path, const Raul::Path& new_path)
{ EMIT(object_moved, old_path, new_path); }
diff --git a/src/client/ThreadedSigClientInterface.hpp b/src/client/ThreadedSigClientInterface.hpp
index 84f9c009..00bd2767 100644
--- a/src/client/ThreadedSigClientInterface.hpp
+++ b/src/client/ThreadedSigClientInterface.hpp
@@ -94,8 +94,8 @@ public:
void connect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path)
{ push_sig(sigc::bind(connection_slot, src_port_path, dst_port_path)); }
- void del(const Raul::Path& path)
- { push_sig(sigc::bind(object_deleted_slot, path)); }
+ void del(const Raul::URI& uri)
+ { push_sig(sigc::bind(object_deleted_slot, uri)); }
void move(const Raul::Path& old_path, const Raul::Path& new_path)
{ push_sig(sigc::bind(object_moved_slot, old_path, new_path)); }
@@ -132,7 +132,7 @@ private:
sigc::slot<void, Raul::URI, Resource::Properties,
Resource::Properties> delta_slot;
sigc::slot<void, Raul::Path, Raul::Path> connection_slot;
- sigc::slot<void, Raul::Path> object_deleted_slot;
+ sigc::slot<void, Raul::URI> object_deleted_slot;
sigc::slot<void, Raul::Path, Raul::Path> object_moved_slot;
sigc::slot<void, Raul::Path, Raul::Path> disconnection_slot;
sigc::slot<void, Raul::URI, Raul::URI, Raul::Atom> variable_change_slot;
diff --git a/src/engine/ClientBroadcaster.hpp b/src/engine/ClientBroadcaster.hpp
index 989ed41b..ec0e7492 100644
--- a/src/engine/ClientBroadcaster.hpp
+++ b/src/engine/ClientBroadcaster.hpp
@@ -84,8 +84,8 @@ public:
BROADCAST(move, old_path, new_path);
}
- void del(const Raul::Path& path) {
- BROADCAST(del, path);
+ void del(const Raul::URI& uri) {
+ BROADCAST(del, uri);
}
void connect(const Raul::Path& src_port_path,
diff --git a/src/engine/HTTPClientSender.cpp b/src/engine/HTTPClientSender.cpp
index c9e0eaa2..6d91a2c0 100644
--- a/src/engine/HTTPClientSender.cpp
+++ b/src/engine/HTTPClientSender.cpp
@@ -75,10 +75,9 @@ HTTPClientSender::delta(const URI& uri,
}
void
-HTTPClientSender::del(const Path& path)
+HTTPClientSender::del(const URI& uri)
{
- assert(!path.is_root());
- send_chunk(string("<").append(path.str()).append("> a <http://www.w3.org/2002/07/owl#Nothing> ."));
+ send_chunk(string("<").append(uri.str()).append("> a <http://www.w3.org/2002/07/owl#Nothing> ."));
}
void
diff --git a/src/engine/HTTPClientSender.hpp b/src/engine/HTTPClientSender.hpp
index aa7baf88..1b741071 100644
--- a/src/engine/HTTPClientSender.hpp
+++ b/src/engine/HTTPClientSender.hpp
@@ -74,7 +74,7 @@ public:
const Resource::Properties& remove,
const Resource::Properties& add);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
virtual void move(const Raul::Path& old_path,
const Raul::Path& new_path);
diff --git a/src/engine/OSCClientSender.cpp b/src/engine/OSCClientSender.cpp
index ca2eb49f..020fb922 100644
--- a/src/engine/OSCClientSender.cpp
+++ b/src/engine/OSCClientSender.cpp
@@ -148,9 +148,9 @@ OSCClientSender::move(const Path& old_path, const Path& new_path)
* DELETE an object (see \ref methods).
*/
void
-OSCClientSender::del(const Path& path)
+OSCClientSender::del(const URI& uri)
{
- send("/delete", "s", path.c_str(), LO_ARGS_END);
+ send("/delete", "s", uri.c_str(), LO_ARGS_END);
}
/** \page client_osc_namespace
diff --git a/src/engine/OSCClientSender.hpp b/src/engine/OSCClientSender.hpp
index 6ce8d684..7352ebc2 100644
--- a/src/engine/OSCClientSender.hpp
+++ b/src/engine/OSCClientSender.hpp
@@ -77,7 +77,7 @@ public:
const Resource::Properties& remove,
const Resource::Properties& add);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
virtual void move(const Raul::Path& old_path,
const Raul::Path& new_path);
diff --git a/src/engine/OSCEngineReceiver.cpp b/src/engine/OSCEngineReceiver.cpp
index 1b8d1179..9e2193e5 100644
--- a/src/engine/OSCEngineReceiver.cpp
+++ b/src/engine/OSCEngineReceiver.cpp
@@ -94,7 +94,6 @@ OSCEngineReceiver::OSCEngineReceiver(Engine& engine, size_t queue_size, uint16_t
// Commands
lo_server_add_method(_server, "/ping", "i", ping_cb, this);
lo_server_add_method(_server, "/ping_queued", "i", ping_slow_cb, this);
- lo_server_add_method(_server, "/quit", "i", quit_cb, this);
lo_server_add_method(_server, "/register_client", "i", register_client_cb, this);
lo_server_add_method(_server, "/unregister_client", "i", unregister_client_cb, this);
lo_server_add_method(_server, "/put", NULL, put_cb, this);
@@ -269,22 +268,6 @@ OSCEngineReceiver::_ping_slow_cb(const char* path, const char* types, lo_arg** a
}
/** \page engine_osc_namespace
- * <h2>/quit</h2>
- * \arg \b response-id (integer)
- *
- * Terminate the engine.
- * Note that there are NO order guarantees with this command at all. You could
- * send 10 messages then quit, and the quit reply could come immediately and the
- * 10 messages would never get executed.
- */
-int
-OSCEngineReceiver::_quit_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
-{
- quit();
- return 0;
-}
-
-/** \page engine_osc_namespace
* <h2>/register_client</h2>
* \arg \b response-id (integer)
*
@@ -388,9 +371,9 @@ OSCEngineReceiver::_move_cb(const char* path, const char* types, lo_arg** argv,
int
OSCEngineReceiver::_del_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
{
- const char* obj_path = &argv[1]->s;
+ const char* uri = &argv[1]->s;
- del(obj_path);
+ del(uri);
return 0;
}
diff --git a/src/engine/QueuedEngineInterface.cpp b/src/engine/QueuedEngineInterface.cpp
index 1fc68799..456a32ff 100644
--- a/src/engine/QueuedEngineInterface.cpp
+++ b/src/engine/QueuedEngineInterface.cpp
@@ -97,15 +97,6 @@ QueuedEngineInterface::unregister_client(const URI& uri)
}
}
-// Engine commands
-
-void
-QueuedEngineInterface::quit()
-{
- _request->respond_ok();
- _engine.quit();
-}
-
// Bundle commands
void
@@ -146,9 +137,14 @@ QueuedEngineInterface::move(const Path& old_path,
}
void
-QueuedEngineInterface::del(const Path& path)
+QueuedEngineInterface::del(const URI& uri)
{
- push_queued(new Events::Delete(_engine, _request, now(), path));
+ if (uri == "ingen:engine") {
+ _request->respond_ok();
+ _engine.quit();
+ } else {
+ push_queued(new Events::Delete(_engine, _request, now(), uri));
+ }
}
void
diff --git a/src/engine/QueuedEngineInterface.hpp b/src/engine/QueuedEngineInterface.hpp
index dede135e..3cabf0a9 100644
--- a/src/engine/QueuedEngineInterface.hpp
+++ b/src/engine/QueuedEngineInterface.hpp
@@ -59,9 +59,6 @@ public:
virtual void register_client(ClientInterface* client);
virtual void unregister_client(const Raul::URI& uri);
- // Engine commands
- virtual void quit();
-
// Bundles
virtual void bundle_begin();
virtual void bundle_end();
@@ -89,7 +86,7 @@ public:
const Raul::URI& predicate,
const Raul::Atom& value);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
// EngineInterface object commands
diff --git a/src/engine/events/Delete.cpp b/src/engine/events/Delete.cpp
index 50b9174a..4a6e520b 100644
--- a/src/engine/events/Delete.cpp
+++ b/src/engine/events/Delete.cpp
@@ -36,9 +36,12 @@ namespace Ingen {
namespace Engine {
namespace Events {
-Delete::Delete(Engine& engine, SharedPtr<Request> request, FrameTime time, const Raul::Path& path)
+Delete::Delete(Engine& engine,
+ SharedPtr<Request> request,
+ FrameTime time,
+ const Raul::URI& uri)
: QueuedEvent(engine, request, time, true)
- , _path(path)
+ , _uri(uri)
, _store_iterator(engine.engine_store()->end())
, _garbage(NULL)
, _driver_port(NULL)
@@ -50,6 +53,9 @@ Delete::Delete(Engine& engine, SharedPtr<Request> request, FrameTime time, const
{
assert(request);
assert(request->source());
+
+ if (Raul::Path::is_path(uri))
+ _path = Raul::Path(uri.str());
}
Delete::~Delete()
@@ -166,7 +172,8 @@ Delete::post_process()
{
_removed_bindings.reset();
- if (_path.is_root() || _path == "path:/control_in" || _path == "path:/control_out") {
+ if (!Raul::Path::is_path(_uri)
+ || _path.is_root() || _path == "path:/control_in" || _path == "path:/control_out") {
// XXX: Just ignore?
//_request->respond_error(_path.chop_scheme() + " can not be deleted");
} else if (!_node && !_port) {
diff --git a/src/engine/events/Delete.hpp b/src/engine/events/Delete.hpp
index 234d8977..f00ad847 100644
--- a/src/engine/events/Delete.hpp
+++ b/src/engine/events/Delete.hpp
@@ -58,11 +58,10 @@ class DisconnectAll;
class Delete : public QueuedEvent
{
public:
- Delete(
- Engine& engine,
- SharedPtr<Request> request,
- FrameTime timestamp,
- const Raul::Path& path);
+ Delete(Engine& engine,
+ SharedPtr<Request> request,
+ FrameTime timestamp,
+ const Raul::URI& uri);
~Delete();
@@ -71,6 +70,7 @@ public:
void post_process();
private:
+ Raul::URI _uri;
Raul::Path _path;
EngineStore::iterator _store_iterator;
SharedPtr<NodeImpl> _node; ///< Non-NULL iff a node
diff --git a/src/gui/BreadCrumbs.cpp b/src/gui/BreadCrumbs.cpp
index 796e79bd..e7e7e356 100644
--- a/src/gui/BreadCrumbs.cpp
+++ b/src/gui/BreadCrumbs.cpp
@@ -174,10 +174,10 @@ BreadCrumbs::breadcrumb_clicked(BreadCrumb* crumb)
}
void
-BreadCrumbs::object_destroyed(const Path& path)
+BreadCrumbs::object_destroyed(const URI& uri)
{
for (std::list<BreadCrumb*>::iterator i = _breadcrumbs.begin(); i != _breadcrumbs.end(); ++i) {
- if ((*i)->path() == path) {
+ if ((*i)->path() == uri) {
// Remove all crumbs after the removed one (inclusive)
for (std::list<BreadCrumb*>::iterator j = i; j != _breadcrumbs.end(); ) {
BreadCrumb* bc = *j;
diff --git a/src/gui/BreadCrumbs.hpp b/src/gui/BreadCrumbs.hpp
index 5afcf6ad..c716e33e 100644
--- a/src/gui/BreadCrumbs.hpp
+++ b/src/gui/BreadCrumbs.hpp
@@ -99,7 +99,7 @@ private:
void breadcrumb_clicked(BreadCrumb* crumb);
- void object_destroyed(const Raul::Path& path);
+ void object_destroyed(const Raul::URI& uri);
void object_moved(const Raul::Path& old_path, const Raul::Path& new_path);
Raul::Path _active_path;
diff --git a/src/shared/ClashAvoider.cpp b/src/shared/ClashAvoider.cpp
index 19a8f15d..10a26934 100644
--- a/src/shared/ClashAvoider.cpp
+++ b/src/shared/ClashAvoider.cpp
@@ -187,9 +187,10 @@ ClashAvoider::set_property(const Raul::URI& subject,
}
void
-ClashAvoider::del(const Raul::Path& path)
+ClashAvoider::del(const Raul::URI& uri)
{
- _target.del(map_path(path));
+ if (Raul::Path::is_path(uri))
+ _target.del(map_path(Raul::Path(uri.str())));
}
} // namespace Shared
diff --git a/src/shared/ClashAvoider.hpp b/src/shared/ClashAvoider.hpp
index 13eb1007..3cd5c8ba 100644
--- a/src/shared/ClashAvoider.hpp
+++ b/src/shared/ClashAvoider.hpp
@@ -68,7 +68,7 @@ public:
const Raul::URI& predicate,
const Raul::Atom& value);
- virtual void del(const Raul::Path& path);
+ virtual void del(const Raul::URI& uri);
private:
const Raul::URI map_uri(const Raul::URI& in);