summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ingen/ClientInterface.hpp5
-rw-r--r--include/ingen/Status.hpp81
-rw-r--r--include/ingen/client/SigClientInterface.hpp10
-rw-r--r--include/ingen/client/ThreadedSigClientInterface.hpp13
-rw-r--r--src/bindings/Client.hpp3
-rw-r--r--src/gui/App.cpp10
-rw-r--r--src/gui/App.hpp3
-rw-r--r--src/gui/ConnectWindow.cpp4
-rw-r--r--src/gui/ConnectWindow.hpp2
-rw-r--r--src/http/HTTPClientReceiver.cpp6
-rw-r--r--src/http/HTTPClientSender.cpp12
-rw-r--r--src/http/HTTPClientSender.hpp3
-rw-r--r--src/osc/OSCClientReceiver.cpp19
-rw-r--r--src/osc/OSCClientReceiver.hpp3
-rw-r--r--src/osc/OSCClientSender.cpp33
-rw-r--r--src/osc/OSCClientSender.hpp3
-rw-r--r--src/server/ClientBroadcaster.hpp5
-rw-r--r--src/server/Event.cpp12
-rw-r--r--src/server/Event.hpp19
-rw-r--r--src/server/ServerInterfaceImpl.cpp2
-rw-r--r--src/server/events/Connect.cpp42
-rw-r--r--src/server/events/Connect.hpp10
-rw-r--r--src/server/events/CreateNode.cpp27
-rw-r--r--src/server/events/CreatePatch.cpp31
-rw-r--r--src/server/events/CreatePatch.hpp2
-rw-r--r--src/server/events/CreatePort.cpp27
-rw-r--r--src/server/events/CreatePort.hpp7
-rw-r--r--src/server/events/Deactivate.hpp2
-rw-r--r--src/server/events/Delete.cpp12
-rw-r--r--src/server/events/Disconnect.cpp44
-rw-r--r--src/server/events/Disconnect.hpp10
-rw-r--r--src/server/events/DisconnectAll.cpp31
-rw-r--r--src/server/events/DisconnectAll.hpp7
-rw-r--r--src/server/events/Get.cpp8
-rw-r--r--src/server/events/Move.cpp23
-rw-r--r--src/server/events/Move.hpp8
-rw-r--r--src/server/events/Ping.hpp2
-rw-r--r--src/server/events/RegisterClient.cpp2
-rw-r--r--src/server/events/SetMetadata.cpp53
-rw-r--r--src/server/events/SetMetadata.hpp8
-rw-r--r--src/server/events/SetPortValue.cpp43
-rw-r--r--src/server/events/SetPortValue.hpp9
-rw-r--r--src/server/events/UnregisterClient.cpp9
43 files changed, 238 insertions, 427 deletions
diff --git a/include/ingen/ClientInterface.hpp b/include/ingen/ClientInterface.hpp
index a72c4743..0bed231c 100644
--- a/include/ingen/ClientInterface.hpp
+++ b/include/ingen/ClientInterface.hpp
@@ -25,6 +25,7 @@
#include "raul/URI.hpp"
#include "ingen/CommonInterface.hpp"
+#include "ingen/Status.hpp"
namespace Raul { class Path; }
@@ -40,9 +41,7 @@ class ClientInterface : public CommonInterface
public:
virtual ~ClientInterface() {}
- virtual void response_ok(int32_t id) = 0;
-
- virtual void response_error(int32_t id, const std::string& msg) = 0;
+ virtual void response(int32_t id, Status status) = 0;
virtual void error(const std::string& msg) = 0;
diff --git a/include/ingen/Status.hpp b/include/ingen/Status.hpp
new file mode 100644
index 00000000..0e19435a
--- /dev/null
+++ b/include/ingen/Status.hpp
@@ -0,0 +1,81 @@
+/* This file is part of Ingen.
+ * Copyright 2012 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_STATUS_HPP
+#define INGEN_STATUS_HPP
+
+namespace Ingen {
+
+enum Status {
+ SUCCESS,
+ FAILURE,
+
+ BAD_INDEX,
+ BAD_OBJECT_TYPE,
+ BAD_VALUE_TYPE,
+ CLIENT_NOT_FOUND,
+ CREATION_FAILED,
+ DIRECTION_MISMATCH,
+ EXISTS,
+ INTERNAL_ERROR,
+ INVALID_PARENT_PATH,
+ INVALID_POLY,
+ NOT_FOUND,
+ NOT_MOVABLE,
+ NO_SPACE,
+ PARENT_DIFFERS,
+ PARENT_NOT_FOUND,
+ PLUGIN_NOT_FOUND,
+ PORT_NOT_FOUND,
+ TYPE_MISMATCH,
+ UNKNOWN_TYPE
+};
+
+static inline const char*
+ingen_status_string(Status st)
+{
+ switch (st) {
+ case SUCCESS: return "Success";
+ case FAILURE: return "Failure";
+
+ case BAD_INDEX: return "Invalid index";
+ case BAD_OBJECT_TYPE: return "Invalid object type";
+ case BAD_VALUE_TYPE: return "Invalid value type";
+ case CLIENT_NOT_FOUND: return "Client not found";
+ case CREATION_FAILED: return "Creation failed";
+ case DIRECTION_MISMATCH: return "Direction mismatch";
+ case EXISTS: return "Object exists";
+ case INTERNAL_ERROR: return "Internal error" ;
+ case INVALID_PARENT_PATH: return "Invalid parent path";
+ case INVALID_POLY: return "Invalid polyphony";
+ case NOT_FOUND: return "Object not found";
+ case NOT_MOVABLE: return "Object not movable";
+ case NO_SPACE: return "Insufficient space";
+ case PARENT_DIFFERS: return "Parent differs";
+ case PARENT_NOT_FOUND: return "Parent not found";
+ case PORT_NOT_FOUND: return "Port not found";
+ case PLUGIN_NOT_FOUND: return "Plugin not found";
+ case TYPE_MISMATCH: return "Type mismatch";
+ case UNKNOWN_TYPE: return "Unknown type";
+ }
+
+ return "Unknown error";
+}
+
+} // namespace Ingen
+
+#endif // INGEN_STATUS_HPP
diff --git a/include/ingen/client/SigClientInterface.hpp b/include/ingen/client/SigClientInterface.hpp
index ae42b169..559d1b15 100644
--- a/include/ingen/client/SigClientInterface.hpp
+++ b/include/ingen/client/SigClientInterface.hpp
@@ -44,8 +44,7 @@ public:
Raul::URI uri() const { return "http://drobilla.net/ns/ingen#internal"; }
- INGEN_SIGNAL(response_ok, void, int32_t)
- INGEN_SIGNAL(response_error, void, int32_t, std::string)
+ INGEN_SIGNAL(response, void, int32_t, Status)
INGEN_SIGNAL(bundle_begin, void)
INGEN_SIGNAL(bundle_end, void)
INGEN_SIGNAL(error, void, std::string)
@@ -78,11 +77,8 @@ protected:
void bundle_end()
{ EMIT(bundle_end); }
- void response_ok(int32_t id)
- { EMIT(response_ok, id); }
-
- void response_error(int32_t id, const std::string& msg)
- { EMIT(response_error, id, msg); }
+ void response(int32_t id, Status status)
+ { EMIT(response, id, status); }
void error(const std::string& msg)
{ EMIT(error, msg); }
diff --git a/include/ingen/client/ThreadedSigClientInterface.hpp b/include/ingen/client/ThreadedSigClientInterface.hpp
index 3de2eaea..6ded560e 100644
--- a/include/ingen/client/ThreadedSigClientInterface.hpp
+++ b/include/ingen/client/ThreadedSigClientInterface.hpp
@@ -53,8 +53,7 @@ class ThreadedSigClientInterface : public SigClientInterface
public:
ThreadedSigClientInterface(uint32_t queue_size)
: _sigs(queue_size)
- , response_ok_slot(_signal_response_ok.make_slot())
- , response_error_slot(_signal_response_error.make_slot())
+ , response_slot(_signal_response.make_slot())
, error_slot(_signal_error.make_slot())
, new_port_slot(_signal_new_port.make_slot())
, put_slot(_signal_put.make_slot())
@@ -77,11 +76,8 @@ public:
void bundle_end()
{ push_sig(bundle_end_slot); }
- void response_ok(int32_t id)
- { push_sig(sigc::bind(response_ok_slot, id)); }
-
- void response_error(int32_t id, const std::string& msg)
- { push_sig(sigc::bind(response_error_slot, id, msg)); }
+ void response(int32_t id, Status status)
+ { push_sig(sigc::bind(response_slot, id, status)); }
void error(const std::string& msg)
{ push_sig(sigc::bind(error_slot, msg)); }
@@ -130,8 +126,7 @@ private:
sigc::slot<void> bundle_begin_slot;
sigc::slot<void> bundle_end_slot;
- sigc::slot<void, int32_t> response_ok_slot;
- sigc::slot<void, int32_t, std::string> response_error_slot;
+ sigc::slot<void, int32_t, Status> response_slot;
sigc::slot<void, std::string> error_slot;
sigc::slot<void, Raul::URI, Raul::URI, Raul::Symbol> new_plugin_slot;
sigc::slot<void, Raul::Path, Raul::URI, uint32_t, bool> new_port_slot;
diff --git a/src/bindings/Client.hpp b/src/bindings/Client.hpp
index 703b4199..8a5b99aa 100644
--- a/src/bindings/Client.hpp
+++ b/src/bindings/Client.hpp
@@ -13,8 +13,7 @@ public:
void bundle_begin() {}
void bundle_end() {}
- void response_ok(int32_t id) {}
- void response_error(int32_t id, const std::string& msg) {}
+ void response(int32_t id, Status status) {}
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) {}
diff --git a/src/gui/App.cpp b/src/gui/App.cpp
index 5a42af53..e23ef5a6 100644
--- a/src/gui/App.cpp
+++ b/src/gui/App.cpp
@@ -167,8 +167,8 @@ App::attach(SharedPtr<SigClientInterface> client)
_patch_tree_window->init(*this, *_store);
- _client->signal_response_error().connect(
- sigc::mem_fun(this, &App::error_response));
+ _client->signal_response().connect(
+ sigc::mem_fun(this, &App::response));
_client->signal_error().connect(
sigc::mem_fun(this, &App::error_message));
_client->signal_property_change().connect(
@@ -199,9 +199,11 @@ App::serialiser()
}
void
-App::error_response(int32_t id, const string& str)
+App::response(int32_t id, Status status)
{
- error_message(str);
+ if (status) {
+ error_message(ingen_status_string(status));
+ }
}
void
diff --git a/src/gui/App.hpp b/src/gui/App.hpp
index 69bcd793..5ca767e9 100644
--- a/src/gui/App.hpp
+++ b/src/gui/App.hpp
@@ -28,6 +28,7 @@
#include "raul/SharedPtr.hpp"
#include "raul/Deletable.hpp"
+#include "ingen/Status.hpp"
#include "ingen/shared/World.hpp"
namespace Ingen {
@@ -135,7 +136,7 @@ protected:
App(Ingen::Shared::World* world);
bool animate();
- void error_response(int32_t id, const std::string& str);
+ void response(int32_t id, Ingen::Status status);
void property_change(const Raul::URI& subject,
const Raul::URI& key,
diff --git a/src/gui/ConnectWindow.cpp b/src/gui/ConnectWindow.cpp
index e7a0aba1..0bfa1999 100644
--- a/src/gui/ConnectWindow.cpp
+++ b/src/gui/ConnectWindow.cpp
@@ -369,8 +369,8 @@ ConnectWindow::gtk_callback()
if (_connect_stage == 0) {
_attached = false;
- _app->client()->signal_response_ok().connect(
- sigc::mem_fun(this, &ConnectWindow::on_response));
+ _app->client()->signal_response().connect(
+ sigc::mem_fun(this, &ConnectWindow::ingen_response));
_ping_id = abs(rand()) / 2 * 2; // avoid -1
_app->engine()->respond_to(_app->client().get(), _ping_id);
diff --git a/src/gui/ConnectWindow.hpp b/src/gui/ConnectWindow.hpp
index 9f82db32..9905b51a 100644
--- a/src/gui/ConnectWindow.hpp
+++ b/src/gui/ConnectWindow.hpp
@@ -45,7 +45,7 @@ public:
void set_connected_to(SharedPtr<ServerInterface> engine);
void start(App& app, Ingen::Shared::World* world);
- void on_response(int32_t id) { _attached = true; }
+ void ingen_response(int32_t id, Status status) { _attached = true; }
bool attached() const { return _finished_connecting; }
bool quit_flag() const { return _quit_flag; }
diff --git a/src/http/HTTPClientReceiver.cpp b/src/http/HTTPClientReceiver.cpp
index dc1235e7..bb4b9c3b 100644
--- a/src/http/HTTPClientReceiver.cpp
+++ b/src/http/HTTPClientReceiver.cpp
@@ -166,14 +166,14 @@ HTTPClientReceiver::message_callback(SoupSession* session, SoupMessage* msg, voi
}
if (path == "/") {
- me->_target->response_ok(0);
+ me->_target->response(0, SUCCESS);
} else if (path == "/plugins") {
if (msg->response_body->data == NULL) {
LOG(error) << "Empty response" << endl;
} else {
Glib::Mutex::Lock lock(me->_mutex);
- me->_target->response_ok(0);
+ me->_target->response(0, SUCCESS);
me->_world->parser()->parse_string(me->_world, me->_target.get(),
Glib::ustring(msg->response_body->data), me->_url);
}
@@ -183,7 +183,7 @@ HTTPClientReceiver::message_callback(SoupSession* session, SoupMessage* msg, voi
LOG(error) << "Empty response" << endl;
} else {
Glib::Mutex::Lock lock(me->_mutex);
- me->_target->response_ok(0);
+ me->_target->response(0, SUCCESS);
me->_world->parser()->parse_string(
me->_world,
me->_target.get(),
diff --git a/src/http/HTTPClientSender.cpp b/src/http/HTTPClientSender.cpp
index 979d1e64..ea983ca4 100644
--- a/src/http/HTTPClientSender.cpp
+++ b/src/http/HTTPClientSender.cpp
@@ -36,14 +36,12 @@ namespace Ingen {
namespace Server {
void
-HTTPClientSender::response_ok(int32_t id)
+HTTPClientSender::response(int32_t id, Status status)
{
-}
-
-void
-HTTPClientSender::response_error(int32_t id, const std::string& msg)
-{
- warn << "HTTP Error " << id << " (" << msg << ")" << endl;
+ if (status) {
+ warn << "HTTP Error " << id
+ << " (" << ingen_status_string(status) << ")" << endl;
+ }
}
void
diff --git a/src/http/HTTPClientSender.hpp b/src/http/HTTPClientSender.hpp
index 761a60a6..c0af96df 100644
--- a/src/http/HTTPClientSender.hpp
+++ b/src/http/HTTPClientSender.hpp
@@ -63,8 +63,7 @@ public:
/* *** ClientInterface Implementation Below *** */
- void response_ok(int32_t id);
- void response_error(int32_t id, const std::string& msg);
+ void response(int32_t id, Status status);
void error(const std::string& msg);
diff --git a/src/osc/OSCClientReceiver.cpp b/src/osc/OSCClientReceiver.cpp
index 249cf2a4..a0cd58b7 100644
--- a/src/osc/OSCClientReceiver.cpp
+++ b/src/osc/OSCClientReceiver.cpp
@@ -137,8 +137,7 @@ OSCClientReceiver::setup_callbacks()
if (!_target)
return;
- lo_server_thread_add_method(_st, "/ok", "i", response_ok_cb, this);
- lo_server_thread_add_method(_st, "/error", "is", response_error_cb, this);
+ lo_server_thread_add_method(_st, "/response", "ii", response_cb, this);
lo_server_thread_add_method(_st, "/plugin", "sss", plugin_cb, this);
lo_server_thread_add_method(_st, "/put", NULL, put_cb, this);
lo_server_thread_add_method(_st, "/delta_begin", NULL, delta_begin_cb, this);
@@ -282,20 +281,10 @@ OSCClientReceiver::_activity_cb(const char* path, const char* types, lo_arg** ar
}
int
-OSCClientReceiver::_response_ok_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
+OSCClientReceiver::_response_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
{
- assert(!strcmp(types, "i"));
- _target->response_ok(argv[0]->i);
-
- return 0;
-}
-
-int
-OSCClientReceiver::_response_error_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
-{
- assert(!strcmp(types, "is"));
- _target->response_error(argv[0]->i, &argv[1]->s);
-
+ assert(!strcmp(types, "ii"));
+ _target->response(argv[0]->i, (Status)argv[1]->i);
return 0;
}
diff --git a/src/osc/OSCClientReceiver.hpp b/src/osc/OSCClientReceiver.hpp
index 46afc81a..a04ed5f5 100644
--- a/src/osc/OSCClientReceiver.hpp
+++ b/src/osc/OSCClientReceiver.hpp
@@ -66,8 +66,7 @@ private:
int _listen_port;
LO_HANDLER(OSCClientReceiver, error);
- LO_HANDLER(OSCClientReceiver, response_ok);
- LO_HANDLER(OSCClientReceiver, response_error);
+ LO_HANDLER(OSCClientReceiver, response);
LO_HANDLER(OSCClientReceiver, plugin);
LO_HANDLER(OSCClientReceiver, plugin_list_end);
LO_HANDLER(OSCClientReceiver, new_patch);
diff --git a/src/osc/OSCClientSender.cpp b/src/osc/OSCClientSender.cpp
index a0b7979c..1a6289f4 100644
--- a/src/osc/OSCClientSender.cpp
+++ b/src/osc/OSCClientSender.cpp
@@ -39,41 +39,22 @@ namespace Server {
*/
/** @page client_osc_namespace
- * <h2>/ok</h2>
+ * <h2>/response</h2>
* @arg @p response-id :: Integer
+ * @arg @p status :: Integer
*
* @par
- * Successful response to some command.
+ * Response to some command.
*/
void
-OSCClientSender::response_ok(int32_t id)
-{
- if (!_enabled)
- return;
-
- if (lo_send(_address, "/ok", "i", id, LO_ARGS_END) < 0) {
- Raul::error << "Unable to send OK " << id << "! ("
- << lo_address_errstr(_address) << ")" << endl;
- }
-}
-
-/** @page client_osc_namespace
- * <h2>/error</h2>
- * @arg @p response-id :: Integer
- * @arg @p message :: String
- *
- * @par
- * Unsuccessful response to some command.
- */
-void
-OSCClientSender::response_error(int32_t id, const std::string& msg)
+OSCClientSender::response(int32_t id, Status status)
{
if (!_enabled)
return;
- if (lo_send(_address, "/error", "is", id, msg.c_str(), LO_ARGS_END) < 0) {
- Raul::error << "Unable to send error " << id << "! ("
- << lo_address_errstr(_address) << ")" << endl;
+ if (lo_send(_address, "/response", "ii", id, status, LO_ARGS_END) < 0) {
+ Raul::error << "Unable to send response " << id << "! ("
+ << lo_address_errstr(_address) << ")" << endl;
}
}
diff --git a/src/osc/OSCClientSender.hpp b/src/osc/OSCClientSender.hpp
index c391e54a..67e76fee 100644
--- a/src/osc/OSCClientSender.hpp
+++ b/src/osc/OSCClientSender.hpp
@@ -66,8 +66,7 @@ public:
/* *** ClientInterface Implementation Below *** */
- void response_ok(int32_t id);
- void response_error(int32_t id, const std::string& msg);
+ void response(int32_t id, Status status);
void error(const std::string& msg);
diff --git a/src/server/ClientBroadcaster.hpp b/src/server/ClientBroadcaster.hpp
index 3d49dc4a..c406bc49 100644
--- a/src/server/ClientBroadcaster.hpp
+++ b/src/server/ClientBroadcaster.hpp
@@ -115,10 +115,9 @@ public:
Raul::URI uri() const { return "http://drobilla.net/ns/ingen#broadcaster"; } ///< N/A
- void response_ok(int32_t id) {} ///< N/A
- void response_error(int32_t id, const std::string& msg) {} ///< N/A
+ void response(int32_t id, Status status) {} ///< N/A
- void error(const std::string& msg) { BROADCAST(error, msg); }
+ void error(const std::string& msg) { BROADCAST(error, msg); }
void activity(const Raul::Path& path,
const Raul::Atom& value) {
diff --git a/src/server/Event.cpp b/src/server/Event.cpp
index 76932550..95d0d052 100644
--- a/src/server/Event.cpp
+++ b/src/server/Event.cpp
@@ -63,18 +63,10 @@ Event::post_process()
}
void
-Event::respond_ok()
+Event::respond(Status status)
{
if (_request_client) {
- _request_client->response_ok(_request_id);
- }
-}
-
-void
-Event::respond_error(const std::string& msg)
-{
- if (_request_client) {
- _request_client->response_error(_request_id, msg);
+ _request_client->response(_request_id, status);
}
}
diff --git a/src/server/Event.hpp b/src/server/Event.hpp
index 5f9234bd..9572610c 100644
--- a/src/server/Event.hpp
+++ b/src/server/Event.hpp
@@ -24,6 +24,8 @@
#include "raul/Path.hpp"
#include "raul/SharedPtr.hpp"
+#include "ingen/Status.hpp"
+
#include "types.hpp"
namespace Ingen {
@@ -73,14 +75,11 @@ public:
/** Set the next event to be processed after this one. */
void next(Event* ev) { _next = ev; }
- /** Return the error status of this event. */
- int error() const { return _error; }
-
- /** Respond to the originating client successfully. */
- void respond_ok();
+ /** Return the status (success or error code) of this event. */
+ Status status() const { return _status; }
- /** Respond to the originating client with an error. */
- void respond_error(const std::string& msg);
+ /** Respond to the originating client. */
+ void respond(Status status);
protected:
Event(Engine& engine, ClientInterface* client, int32_t id, FrameTime time)
@@ -88,7 +87,7 @@ protected:
, _request_client(client)
, _request_id(id)
, _time(time)
- , _error(0) // success
+ , _status(SUCCESS)
, _pre_processed(false)
, _executed(false)
{}
@@ -99,7 +98,7 @@ protected:
, _request_client(NULL)
, _request_id(-1)
, _time(0)
- , _error(0) // success
+ , _status(SUCCESS)
, _pre_processed(false)
, _executed(false)
{}
@@ -109,7 +108,7 @@ protected:
ClientInterface* _request_client;
int32_t _request_id;
FrameTime _time;
- int _error;
+ Status _status;
bool _pre_processed;
bool _executed;
};
diff --git a/src/server/ServerInterfaceImpl.cpp b/src/server/ServerInterfaceImpl.cpp
index 7715019f..cf08a8de 100644
--- a/src/server/ServerInterfaceImpl.cpp
+++ b/src/server/ServerInterfaceImpl.cpp
@@ -136,7 +136,7 @@ ServerInterfaceImpl::del(const URI& uri)
{
if (uri == "ingen:engine") {
if (_request_client) {
- _request_client->response_ok(_request_id);
+ _request_client->response(_request_id, SUCCESS);
}
_engine.quit();
} else {
diff --git a/src/server/events/Connect.cpp b/src/server/events/Connect.cpp
index 7a4dae0a..0cdd78dd 100644
--- a/src/server/events/Connect.cpp
+++ b/src/server/events/Connect.cpp
@@ -67,7 +67,7 @@ Connect::pre_process()
PortImpl* src_port = _engine.engine_store()->find_port(_src_port_path);
PortImpl* dst_port = _engine.engine_store()->find_port(_dst_port_path);
if (!src_port || !dst_port) {
- _error = PORT_NOT_FOUND;
+ _status = PORT_NOT_FOUND;
Event::pre_process();
return;
}
@@ -75,7 +75,7 @@ Connect::pre_process()
_dst_input_port = dynamic_cast<InputPort*>(dst_port);
_src_output_port = dynamic_cast<OutputPort*>(src_port);
if (!_dst_input_port || !_src_output_port) {
- _error = DIRECTION_MISMATCH;
+ _status = DIRECTION_MISMATCH;
Event::pre_process();
return;
}
@@ -83,7 +83,7 @@ Connect::pre_process()
NodeImpl* const src_node = src_port->parent_node();
NodeImpl* const dst_node = dst_port->parent_node();
if (!src_node || !dst_node) {
- _error = PARENTS_NOT_FOUND;
+ _status = PARENT_NOT_FOUND;
Event::pre_process();
return;
}
@@ -91,13 +91,13 @@ Connect::pre_process()
if (src_node->parent() != dst_node->parent()
&& src_node != dst_node->parent()
&& src_node->parent() != dst_node) {
- _error = PARENT_PATCH_DIFFERENT;
+ _status = PARENT_DIFFERS;
Event::pre_process();
return;
}
if (!ConnectionImpl::can_connect(_src_output_port, _dst_input_port)) {
- _error = TYPE_MISMATCH;
+ _status = TYPE_MISMATCH;
Event::pre_process();
return;
}
@@ -120,7 +120,7 @@ Connect::pre_process()
}
if (_patch->has_connection(_src_output_port, _dst_input_port)) {
- _error = ALREADY_CONNECTED;
+ _status = EXISTS;
Event::pre_process();
return;
}
@@ -161,7 +161,7 @@ Connect::execute(ProcessContext& context)
{
Event::execute(context);
- if (_error == NO_ERROR) {
+ if (_status == SUCCESS) {
// This must be inserted here, since they're actually used by the audio thread
_dst_input_port->add_connection(_connection.get());
assert(_buffers);
@@ -175,34 +175,10 @@ Connect::execute(ProcessContext& context)
void
Connect::post_process()
{
- std::ostringstream ss;
- if (_error == NO_ERROR) {
- respond_ok();
+ respond(_status);
+ if (!_status) {
_engine.broadcaster()->connect(_src_port_path, _dst_port_path);
- return;
- }
-
- ss << boost::format("Unable to make connection %1% -> %2% (")
- % _src_port_path.chop_scheme() % _dst_port_path.chop_scheme();
-
- switch (_error) {
- case PARENT_PATCH_DIFFERENT:
- ss << "Ports have mismatched parents"; break;
- case PORT_NOT_FOUND:
- ss << "Port not found"; break;
- case TYPE_MISMATCH:
- ss << "Type mismatch"; break;
- case DIRECTION_MISMATCH:
- ss << "Direction mismatch"; break;
- case ALREADY_CONNECTED:
- ss << "Already connected"; break;
- case PARENTS_NOT_FOUND:
- ss << "Parents not found"; break;
- default:
- ss << "Unknown error";
}
- ss << ")";
- respond_error(ss.str());
}
} // namespace Events
diff --git a/src/server/events/Connect.hpp b/src/server/events/Connect.hpp
index 92f8bcf4..c1218865 100644
--- a/src/server/events/Connect.hpp
+++ b/src/server/events/Connect.hpp
@@ -61,16 +61,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- PARENT_PATCH_DIFFERENT,
- PORT_NOT_FOUND,
- TYPE_MISMATCH,
- DIRECTION_MISMATCH,
- ALREADY_CONNECTED,
- PARENTS_NOT_FOUND
- };
-
Raul::Path _src_port_path;
Raul::Path _dst_port_path;
diff --git a/src/server/events/CreateNode.cpp b/src/server/events/CreateNode.cpp
index 04fef8b1..5fe7a86f 100644
--- a/src/server/events/CreateNode.cpp
+++ b/src/server/events/CreateNode.cpp
@@ -96,8 +96,9 @@ CreateNode::pre_process()
}
}
- if (!_node)
- _error = 1;
+ if (!_node) {
+ _status = FAILURE;
+ }
Event::pre_process();
}
@@ -116,22 +117,16 @@ CreateNode::execute(ProcessContext& context)
void
CreateNode::post_process()
{
- string msg;
if (_node_already_exists) {
- msg = string("Could not create node - ").append(_path.str());// + " already exists.";
- respond_error(msg);
- } else if (_patch == NULL) {
- msg = "Could not find patch '" + _path.parent().str() +"' to add node.";
- respond_error(msg);
- } else if (_plugin == NULL) {
- msg = "Unable to load node ";
- msg += _path.str() + " (you're missing the plugin " + _plugin_uri.str() + ")";
- respond_error(msg);
- } else if (_node == NULL) {
- msg = "Failed to instantiate plugin " + _plugin_uri.str();
- respond_error(msg);
+ respond(EXISTS);
+ } else if (!_patch) {
+ respond(PARENT_NOT_FOUND);
+ } else if (!_plugin) {
+ respond(PLUGIN_NOT_FOUND);
+ } else if (!_node) {
+ respond(FAILURE);
} else {
- respond_ok();
+ respond(SUCCESS);
_engine.broadcaster()->send_object(_node, true); // yes, send ports
}
}
diff --git a/src/server/events/CreatePatch.cpp b/src/server/events/CreatePatch.cpp
index eda05ccd..6e261755 100644
--- a/src/server/events/CreatePatch.cpp
+++ b/src/server/events/CreatePatch.cpp
@@ -55,13 +55,13 @@ void
CreatePatch::pre_process()
{
if (_path.is_root() || _engine.engine_store()->find_object(_path) != NULL) {
- _error = OBJECT_EXISTS;
+ _status = EXISTS;
Event::pre_process();
return;
}
if (_poly < 1) {
- _error = INVALID_POLY;
+ _status = INVALID_POLY;
Event::pre_process();
return;
}
@@ -70,7 +70,7 @@ CreatePatch::pre_process()
_parent = _engine.engine_store()->find_patch(path.parent());
if (_parent == NULL) {
- _error = PARENT_NOT_FOUND;
+ _status = PARENT_NOT_FOUND;
Event::pre_process();
return;
}
@@ -126,32 +126,11 @@ CreatePatch::execute(ProcessContext& context)
void
CreatePatch::post_process()
{
- string msg;
- switch (_error) {
- case NO_ERROR:
- respond_ok();
+ respond(_status);
+ if (!_status) {
// Don't send ports/nodes that have been added since prepare()
// (otherwise they would be sent twice)
_engine.broadcaster()->send_object(_patch, false);
- break;
- case OBJECT_EXISTS:
- respond_ok();
- /*string msg = "Unable to create patch: ";
- msg.append(_path).append(" already exists.");
- respond_error(msg);*/
- break;
- case PARENT_NOT_FOUND:
- msg = "Unable to create patch: Parent ";
- msg.append(Path(_path).parent().str()).append(" not found.");
- respond_error(msg);
- break;
- case INVALID_POLY:
- msg = "Unable to create patch ";
- msg.append(_path.str()).append(": ").append("Invalid polyphony requested.");
- respond_error(msg);
- break;
- default:
- respond_error("Unable to load patch.");
}
}
diff --git a/src/server/events/CreatePatch.hpp b/src/server/events/CreatePatch.hpp
index 4addd524..66a81c20 100644
--- a/src/server/events/CreatePatch.hpp
+++ b/src/server/events/CreatePatch.hpp
@@ -49,8 +49,6 @@ public:
void post_process();
private:
- enum ErrorType { NO_ERROR, OBJECT_EXISTS, PARENT_NOT_FOUND, INVALID_POLY };
-
const Raul::Path _path;
PatchImpl* _patch;
PatchImpl* _parent;
diff --git a/src/server/events/CreatePort.cpp b/src/server/events/CreatePort.cpp
index 9c519981..5080fb79 100644
--- a/src/server/events/CreatePort.cpp
+++ b/src/server/events/CreatePort.cpp
@@ -84,14 +84,14 @@ CreatePort::CreatePort(Engine& engine,
}
if (_data_type == PortType::UNKNOWN) {
- _error = UNKNOWN_TYPE;
+ _status = UNKNOWN_TYPE;
}
}
void
CreatePort::pre_process()
{
- if (_error == UNKNOWN_TYPE || _engine.engine_store()->find_object(_path)) {
+ if (_status == UNKNOWN_TYPE || _engine.engine_store()->find_object(_path)) {
Event::pre_process();
return;
}
@@ -115,7 +115,7 @@ CreatePort::pre_process()
} else if (index_i->second.type() != Atom::INT
|| index_i->second.get_int32() != static_cast<int32_t>(old_num_ports)) {
Event::pre_process();
- _error = BAD_INDEX;
+ _status = BAD_INDEX;
return;
}
@@ -151,7 +151,7 @@ CreatePort::pre_process()
assert(_ports_array->size() == _patch->num_ports());
} else {
- _error = CREATION_FAILED;
+ _status = CREATION_FAILED;
}
}
Event::pre_process();
@@ -175,24 +175,9 @@ CreatePort::execute(ProcessContext& context)
void
CreatePort::post_process()
{
- string msg;
- switch (_error) {
- case NO_ERROR:
- respond_ok();
+ respond(_status);
+ if (!_status) {
_engine.broadcaster()->send_object(_patch_port, true);
- break;
- case BAD_INDEX:
- msg = string("Could not create port ") + _path.str() + " (Illegal index given)";
- respond_error(msg);
- break;
- case UNKNOWN_TYPE:
- msg = string("Could not create port ") + _path.str() + " (Unknown type)";
- respond_error(msg);
- break;
- case CREATION_FAILED:
- msg = string("Could not create port ") + _path.str() + " (Creation failed)";
- respond_error(msg);
- break;
}
}
diff --git a/src/server/events/CreatePort.hpp b/src/server/events/CreatePort.hpp
index 4113611f..fec23f0d 100644
--- a/src/server/events/CreatePort.hpp
+++ b/src/server/events/CreatePort.hpp
@@ -55,13 +55,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- UNKNOWN_TYPE,
- BAD_INDEX,
- CREATION_FAILED
- };
-
Raul::Path _path;
Raul::URI _type;
PortType _data_type;
diff --git a/src/server/events/Deactivate.hpp b/src/server/events/Deactivate.hpp
index b99a2568..33264795 100644
--- a/src/server/events/Deactivate.hpp
+++ b/src/server/events/Deactivate.hpp
@@ -40,7 +40,7 @@ public:
{}
void post_process() {
- respond_ok();
+ respond(SUCCESS);
_engine.deactivate();
}
};
diff --git a/src/server/events/Delete.cpp b/src/server/events/Delete.cpp
index 53d77379..7138a40d 100644
--- a/src/server/events/Delete.cpp
+++ b/src/server/events/Delete.cpp
@@ -173,15 +173,13 @@ Delete::post_process()
if (!Raul::Path::is_path(_uri)
|| _path.is_root() || _path == "path:/control_in" || _path == "path:/control_out") {
- // XXX: Just ignore?
- //respond_error(_path.chop_scheme() + " can not be deleted");
+ // XXX: Report error? Silently ignore?
} else if (!_node && !_port) {
- string msg = string("Could not find object ") + _path.chop_scheme() + " to delete";
- respond_error(msg);
+ respond(NOT_FOUND);
} else if (_patch_node_listnode) {
assert(_node);
_node->deactivate();
- respond_ok();
+ respond(SUCCESS);
_engine.broadcaster()->bundle_begin();
if (_disconnect_event)
_disconnect_event->post_process();
@@ -190,7 +188,7 @@ Delete::post_process()
_engine.maid()->push(_patch_node_listnode);
} else if (_patch_port_listnode) {
assert(_port);
- respond_ok();
+ respond(SUCCESS);
_engine.broadcaster()->bundle_begin();
if (_disconnect_event)
_disconnect_event->post_process();
@@ -198,7 +196,7 @@ Delete::post_process()
_engine.broadcaster()->bundle_end();
_engine.maid()->push(_patch_port_listnode);
} else {
- respond_error("Unable to delete object " + _path.chop_scheme());
+ respond(FAILURE);
}
if (_driver_port)
diff --git a/src/server/events/Disconnect.cpp b/src/server/events/Disconnect.cpp
index 01313208..81528d7c 100644
--- a/src/server/events/Disconnect.cpp
+++ b/src/server/events/Disconnect.cpp
@@ -119,7 +119,7 @@ Disconnect::pre_process()
if (_src_port_path.parent().parent() != _dst_port_path.parent().parent()
&& _src_port_path.parent() != _dst_port_path.parent().parent()
&& _src_port_path.parent().parent() != _dst_port_path.parent()) {
- _error = PARENT_PATCH_DIFFERENT;
+ _status = PARENT_DIFFERS;
Event::pre_process();
return;
}
@@ -128,7 +128,7 @@ Disconnect::pre_process()
_dst_port = _engine.engine_store()->find_port(_dst_port_path);
if (_src_port == NULL || _dst_port == NULL) {
- _error = PORT_NOT_FOUND;
+ _status = PORT_NOT_FOUND;
Event::pre_process();
return;
}
@@ -157,13 +157,13 @@ Disconnect::pre_process()
assert(_patch);
if (!_patch->has_connection(_src_port, _dst_port)) {
- _error = NOT_CONNECTED;
+ _status = NOT_FOUND;
Event::pre_process();
return;
}
if (src_node == NULL || dst_node == NULL) {
- _error = PARENTS_NOT_FOUND;
+ _status = PARENT_NOT_FOUND;
Event::pre_process();
return;
}
@@ -213,9 +213,9 @@ Disconnect::execute(ProcessContext& context)
{
Event::execute(context);
- if (_error == NO_ERROR) {
+ if (_status == SUCCESS) {
if (!_impl->execute(context, true)) {
- _error = CONNECTION_NOT_FOUND;
+ _status = NOT_FOUND;
return;
}
@@ -227,37 +227,9 @@ Disconnect::execute(ProcessContext& context)
void
Disconnect::post_process()
{
- if (_error == NO_ERROR) {
- respond_ok();
+ respond(_status);
+ if (!_status) {
_engine.broadcaster()->disconnect(_src_port->path(), _dst_port->path());
- } else {
- string msg("Unable to disconnect ");
- msg.append(_src_port_path.str() + " => " + _dst_port_path.str());
- msg.append(" (");
- switch (_error) {
- case PARENT_PATCH_DIFFERENT:
- msg.append("Ports exist in different patches");
- break;
- case PORT_NOT_FOUND:
- msg.append("Port not found");
- break;
- case TYPE_MISMATCH:
- msg.append("Ports have incompatible types");
- break;
- case NOT_CONNECTED:
- msg.append("Ports are not connected");
- break;
- case PARENTS_NOT_FOUND:
- msg.append("Parent node not found");
- break;
- case CONNECTION_NOT_FOUND:
- msg.append("Connection not found");
- break;
- default:
- break;
- }
- msg.append(")");
- respond_error(msg);
}
delete _impl;
diff --git a/src/server/events/Disconnect.hpp b/src/server/events/Disconnect.hpp
index 7b26e90c..726f5a98 100644
--- a/src/server/events/Disconnect.hpp
+++ b/src/server/events/Disconnect.hpp
@@ -78,16 +78,6 @@ public:
};
private:
- enum ErrorType {
- NO_ERROR,
- PARENT_PATCH_DIFFERENT,
- PORT_NOT_FOUND,
- TYPE_MISMATCH,
- NOT_CONNECTED,
- PARENTS_NOT_FOUND,
- CONNECTION_NOT_FOUND
- };
-
const Raul::Path _src_port_path;
const Raul::Path _dst_port_path;
diff --git a/src/server/events/DisconnectAll.cpp b/src/server/events/DisconnectAll.cpp
index 7bd9ee96..1538c93b 100644
--- a/src/server/events/DisconnectAll.cpp
+++ b/src/server/events/DisconnectAll.cpp
@@ -94,22 +94,21 @@ DisconnectAll::pre_process()
_parent = _engine.engine_store()->find_patch(_parent_path);
if (_parent == NULL) {
- _error = PARENT_NOT_FOUND;
+ _status = PARENT_NOT_FOUND;
Event::pre_process();
return;
}
GraphObjectImpl* object = _engine.engine_store()->find_object(_path);
-
- if (object == NULL) {
- _error = OBJECT_NOT_FOUND;
+ if (!object) {
+ _status = NOT_FOUND;
Event::pre_process();
return;
}
if (object->parent_patch() != _parent
&& object->parent()->parent_patch() != _parent) {
- _error = INVALID_PARENT_PATH;
+ _status = INVALID_PARENT_PATH;
Event::pre_process();
return;
}
@@ -159,7 +158,7 @@ DisconnectAll::execute(ProcessContext& context)
{
Event::execute(context);
- if (_error == NO_ERROR) {
+ if (_status == SUCCESS) {
for (Impls::iterator i = _impls.begin(); i != _impls.end(); ++i) {
(*i)->execute(context,
!_deleting || ((*i)->dst_port()->parent_node() != _node));
@@ -173,25 +172,9 @@ DisconnectAll::execute(ProcessContext& context)
void
DisconnectAll::post_process()
{
- if (_error == NO_ERROR) {
- respond_ok();
+ respond(_status);
+ if (!_status) {
_engine.broadcaster()->disconnect_all(_parent_path, _path);
- } else {
- boost::format fmt("Unable to disconnect %1% (%2%)");
- fmt % _path;
- switch (_error) {
- case INVALID_PARENT_PATH:
- fmt % string("Invalid parent path: ").append(_parent_path.str());
- break;
- case PARENT_NOT_FOUND:
- fmt % string("Unable to find parent: ").append(_parent_path.str());
- break;
- case OBJECT_NOT_FOUND:
- fmt % string("Unable to find object");
- default:
- break;
- }
- respond_error(fmt.str());
}
}
diff --git a/src/server/events/DisconnectAll.hpp b/src/server/events/DisconnectAll.hpp
index d3f84e96..e3cd2490 100644
--- a/src/server/events/DisconnectAll.hpp
+++ b/src/server/events/DisconnectAll.hpp
@@ -62,13 +62,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- INVALID_PARENT_PATH,
- PARENT_NOT_FOUND,
- OBJECT_NOT_FOUND,
- };
-
Raul::Path _parent_path;
Raul::Path _path;
PatchImpl* _parent;
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp
index c13054dc..08ac3e10 100644
--- a/src/server/events/Get.cpp
+++ b/src/server/events/Get.cpp
@@ -63,14 +63,14 @@ void
Get::post_process()
{
if (_uri == "ingen:plugins") {
- respond_ok();
+ respond(SUCCESS);
if (_request_client) {
_engine.broadcaster()->send_plugins_to(_request_client, _plugins);
}
} else if (!_object && !_plugin) {
- respond_error("Unable to find object requested.");
+ respond(NOT_FOUND);
} else if (_request_client) {
- respond_ok();
+ respond(SUCCESS);
if (_request_client) {
if (_object) {
ObjectSender::send_object(_request_client, _object, true);
@@ -79,7 +79,7 @@ Get::post_process()
}
}
} else {
- respond_error("Unable to find client to send object.");
+ respond(CLIENT_NOT_FOUND);
}
_lock.release();
diff --git a/src/server/events/Move.cpp b/src/server/events/Move.cpp
index 3991e636..878f21f0 100644
--- a/src/server/events/Move.cpp
+++ b/src/server/events/Move.cpp
@@ -58,19 +58,19 @@ Move::pre_process()
Glib::RWLock::WriterLock lock(_engine.engine_store()->lock());
if (!_old_path.parent().is_parent_of(_new_path)) {
- _error = PARENT_DIFFERS;
+ _status = PARENT_DIFFERS;
Event::pre_process();
return;
}
_store_iterator = _engine.engine_store()->find(_old_path);
if (_store_iterator == _engine.engine_store()->end()) {
- _error = OBJECT_NOT_FOUND;
+ _status = NOT_FOUND;
Event::pre_process();
return;
}
if (_engine.engine_store()->find_object(_new_path)) {
- _error = OBJECT_EXISTS;
+ _status = EXISTS;
Event::pre_process();
return;
}
@@ -115,22 +115,9 @@ Move::execute(ProcessContext& context)
void
Move::post_process()
{
- string msg = "Unable to rename object - ";
-
- if (_error == NO_ERROR) {
- respond_ok();
+ respond(_status);
+ if (!_status) {
_engine.broadcaster()->move(_old_path, _new_path);
- } else {
- if (_error == OBJECT_EXISTS)
- msg.append("Object already exists at ").append(_new_path.str());
- else if (_error == OBJECT_NOT_FOUND)
- msg.append("Could not find object ").append(_old_path.str());
- else if (_error == OBJECT_NOT_RENAMABLE)
- msg.append(_old_path.str()).append(" is not renamable");
- else if (_error == PARENT_DIFFERS)
- msg.append(_new_path.str()).append(" is a child of a different patch");
-
- respond_error(msg);
}
}
diff --git a/src/server/events/Move.hpp b/src/server/events/Move.hpp
index e8e99b25..4a167656 100644
--- a/src/server/events/Move.hpp
+++ b/src/server/events/Move.hpp
@@ -59,14 +59,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- OBJECT_NOT_FOUND,
- OBJECT_EXISTS,
- OBJECT_NOT_RENAMABLE,
- PARENT_DIFFERS
- };
-
Raul::Path _old_path;
Raul::Path _new_path;
PatchImpl* _parent_patch;
diff --git a/src/server/events/Ping.hpp b/src/server/events/Ping.hpp
index 5017fd12..4a2a13dc 100644
--- a/src/server/events/Ping.hpp
+++ b/src/server/events/Ping.hpp
@@ -43,7 +43,7 @@ public:
: Event(engine, client, id, timestamp)
{}
- void post_process() { respond_ok(); }
+ void post_process() { respond(SUCCESS); }
};
} // namespace Server
diff --git a/src/server/events/RegisterClient.cpp b/src/server/events/RegisterClient.cpp
index a2c0b8be..c18afb72 100644
--- a/src/server/events/RegisterClient.cpp
+++ b/src/server/events/RegisterClient.cpp
@@ -48,7 +48,7 @@ RegisterClient::pre_process()
void
RegisterClient::post_process()
{
- respond_ok();
+ 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
diff --git a/src/server/events/SetMetadata.cpp b/src/server/events/SetMetadata.cpp
index 720cf3ba..68bd24d5 100644
--- a/src/server/events/SetMetadata.cpp
+++ b/src/server/events/SetMetadata.cpp
@@ -112,7 +112,7 @@ SetMetadata::pre_process()
: static_cast<Shared::ResourceImpl*>(_engine.node_factory()->plugin(_subject));
if (!_object && (!is_graph_object || !_create)) {
- _error = NOT_FOUND;
+ _status = NOT_FOUND;
Event::pre_process();
return;
}
@@ -144,7 +144,7 @@ SetMetadata::pre_process()
// Grab the object for applying properties, if the create-event succeeded
_object = _engine.engine_store()->find_object(Path(_subject.str()));
} else {
- _error = BAD_OBJECT_TYPE;
+ _status = BAD_OBJECT_TYPE;
}
}
@@ -187,7 +187,7 @@ SetMetadata::pre_process()
if (value.type() == Atom::BOOL) {
op = ENABLE_BROADCAST;
} else {
- _error = BAD_VALUE_TYPE;
+ _status = BAD_VALUE_TYPE;
}
} else if (key == uris.ingen_value) {
SetPortValue* ev = new SetPortValue(
@@ -201,10 +201,10 @@ SetMetadata::pre_process()
} else if (value.type() == Atom::DICT) {
op = CONTROL_BINDING;
} else {
- _error = BAD_VALUE_TYPE;
+ _status = BAD_VALUE_TYPE;
}
} else {
- _error = BAD_OBJECT_TYPE;
+ _status = BAD_OBJECT_TYPE;
}
}
} else if ((_patch = dynamic_cast<PatchImpl*>(_object))) {
@@ -215,14 +215,14 @@ SetMetadata::pre_process()
if (value.get_bool() && !_patch->enabled())
_compiled_patch = _patch->compile();
} else {
- _error = BAD_VALUE_TYPE;
+ _status = BAD_VALUE_TYPE;
}
} else if (key == uris.ingen_polyphony) {
if (value.type() == Atom::INT) {
op = POLYPHONY;
_patch->prepare_internal_poly(*_engine.buffer_factory(), value.get_int32());
} else {
- _error = BAD_VALUE_TYPE;
+ _status = BAD_VALUE_TYPE;
}
}
} else if (key == uris.ingen_polyphonic) {
@@ -240,15 +240,15 @@ SetMetadata::pre_process()
obj->prepare_poly(*_engine.buffer_factory(), 1);
}
} else {
- _error = BAD_VALUE_TYPE;
+ _status = BAD_VALUE_TYPE;
}
} else {
- _error = BAD_OBJECT_TYPE;
+ _status = BAD_OBJECT_TYPE;
}
}
}
- if (_error != NO_ERROR) {
+ if (_status != SUCCESS) {
_error_predicate += key.str();
break;
}
@@ -266,7 +266,7 @@ SetMetadata::pre_process()
void
SetMetadata::execute(ProcessContext& context)
{
- if (_error != NO_ERROR) {
+ if (_status != SUCCESS) {
Event::execute(context);
return;
}
@@ -318,7 +318,7 @@ SetMetadata::execute(ProcessContext& context)
!_patch->apply_internal_poly(_engine.driver()->context(),
*_engine.buffer_factory(),
*_engine.maid(), value.get_int32())) {
- _error = INTERNAL;
+ _status = INTERNAL_ERROR;
}
break;
case CONTROL_BINDING:
@@ -351,34 +351,19 @@ SetMetadata::post_process()
for (SetEvents::iterator i = _set_events.begin(); i != _set_events.end(); ++i)
(*i)->post_process();
- switch (_error) {
- case NO_ERROR:
+ if (!_status) {
if (_create_event) {
_create_event->post_process();
} else {
- respond_ok();
- if (_create)
+ respond(SUCCESS);
+ if (_create) {
_engine.broadcaster()->put(_subject, _properties, _context);
- else
+ } else {
_engine.broadcaster()->delta(_subject, _remove, _properties);
+ }
}
- break;
- case NOT_FOUND:
- respond_error((boost::format(
- "Unable to find object `%1%'") % _subject).str());
- break;
- case INTERNAL:
- respond_error("Internal error");
- break;
- case BAD_OBJECT_TYPE:
- respond_error((boost::format(
- "Bad type for object `%1%'") % _subject).str());
- break;
- case BAD_VALUE_TYPE:
- respond_error((boost::format(
- "Bad metadata value type for subject `%1%' predicate `%2%'")
- % _subject % _error_predicate).str());
- break;
+ } else {
+ respond(_status);
}
if (_create_event) {
diff --git a/src/server/events/SetMetadata.hpp b/src/server/events/SetMetadata.hpp
index 512e35c0..bcc3ab4f 100644
--- a/src/server/events/SetMetadata.hpp
+++ b/src/server/events/SetMetadata.hpp
@@ -86,14 +86,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- NOT_FOUND,
- INTERNAL,
- BAD_OBJECT_TYPE,
- BAD_VALUE_TYPE
- };
-
enum SpecialType {
NONE,
ENABLE,
diff --git a/src/server/events/SetPortValue.cpp b/src/server/events/SetPortValue.cpp
index f96649b9..bc4cd9bf 100644
--- a/src/server/events/SetPortValue.cpp
+++ b/src/server/events/SetPortValue.cpp
@@ -84,7 +84,7 @@ SetPortValue::pre_process()
if (_port == NULL)
_port = _engine.engine_store()->find_port(_port_path);
if (_port == NULL)
- _error = PORT_NOT_FOUND;
+ _status = PORT_NOT_FOUND;
}
// Port is a message context port, set its value and
@@ -123,20 +123,20 @@ void
SetPortValue::apply(Context& context)
{
uint32_t start = context.start();
- if (_error == NO_ERROR && !_port)
+ if (_status == SUCCESS && !_port)
_port = _engine.engine_store()->find_port(_port_path);
if (!_port) {
- if (_error == NO_ERROR)
- _error = PORT_NOT_FOUND;
+ if (_status == SUCCESS)
+ _status = PORT_NOT_FOUND;
/*} else if (_port->buffer(0)->capacity() < _data_size) {
- _error = NO_SPACE;*/
+ _status = NO_SPACE;*/
} else {
Buffer* const buf = _port->buffer(0).get();
AudioBuffer* const abuf = dynamic_cast<AudioBuffer*>(buf);
if (abuf) {
if (_value.type() != Atom::FLOAT) {
- _error = TYPE_MISMATCH;
+ _status = TYPE_MISMATCH;
return;
}
@@ -192,31 +192,12 @@ SetPortValue::apply(Context& context)
void
SetPortValue::post_process()
{
- string msg;
- std::ostringstream ss;
- switch (_error) {
- case NO_ERROR:
- assert(_port != NULL);
- respond_ok();
- _engine.broadcaster()->set_property(_port_path,
- _engine.world()->uris()->ingen_value, _value);
- break;
- case TYPE_MISMATCH:
- ss << "Illegal value type " << _value.type()
- << " for port " << _port_path << endl;
- respond_error(ss.str());
- break;
- case PORT_NOT_FOUND:
- msg = "Unable to find port ";
- msg.append(_port_path.str()).append(" to set value");
- respond_error(msg);
- break;
- case NO_SPACE:
- ss << "Attempt to write " << _value.data_size() << " bytes to "
- << _port_path.str() << ", with capacity "
- << _port->buffer_size() << endl;
- respond_error(ss.str());
- break;
+ respond(_status);
+ if (!_status) {
+ _engine.broadcaster()->set_property(
+ _port_path,
+ _engine.world()->uris()->ingen_value,
+ _value);
}
}
diff --git a/src/server/events/SetPortValue.hpp b/src/server/events/SetPortValue.hpp
index 2ceb37f6..71764568 100644
--- a/src/server/events/SetPortValue.hpp
+++ b/src/server/events/SetPortValue.hpp
@@ -65,13 +65,6 @@ public:
void post_process();
private:
- enum ErrorType {
- NO_ERROR,
- PORT_NOT_FOUND,
- NO_SPACE,
- TYPE_MISMATCH
- };
-
void apply(Context& context);
bool _queued;
@@ -81,8 +74,8 @@ private:
ControlBindings::Key _binding;
};
+} // namespace Events
} // namespace Server
} // namespace Ingen
-} // namespace Events
#endif // INGEN_EVENTS_SETPORTVALUE_HPP
diff --git a/src/server/events/UnregisterClient.cpp b/src/server/events/UnregisterClient.cpp
index 64c37fb8..a673c25a 100644
--- a/src/server/events/UnregisterClient.cpp
+++ b/src/server/events/UnregisterClient.cpp
@@ -39,10 +39,11 @@ UnregisterClient::UnregisterClient(Engine& engine,
void
UnregisterClient::post_process()
{
- if (_engine.broadcaster()->unregister_client(_uri))
- respond_ok();
- else
- respond_error("Unable to unregister client");
+ if (_engine.broadcaster()->unregister_client(_uri)) {
+ respond(SUCCESS);
+ } else {
+ respond(FAILURE);
+ }
}
} // namespace Server