diff options
author | David Robillard <d@drobilla.net> | 2011-11-24 18:06:52 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-11-24 18:06:52 +0000 |
commit | 833c93cbde3c7829091a34204435b995a2f5e387 (patch) | |
tree | bc03ad4c27c78118098072a55f5566042eb80243 /src/http | |
parent | 998fc10a1f8358b455960ecafee9910a0ea906d3 (diff) | |
download | ingen-833c93cbde3c7829091a34204435b995a2f5e387.tar.gz ingen-833c93cbde3c7829091a34204435b995a2f5e387.tar.bz2 ingen-833c93cbde3c7829091a34204435b995a2f5e387.zip |
Remove client from world.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3619 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/http')
-rw-r--r-- | src/http/HTTPClientReceiver.cpp | 26 | ||||
-rw-r--r-- | src/http/HTTPClientReceiver.hpp | 7 | ||||
-rw-r--r-- | src/http/HTTPEngineSender.cpp | 14 | ||||
-rw-r--r-- | src/http/HTTPEngineSender.hpp | 2 |
4 files changed, 23 insertions, 26 deletions
diff --git a/src/http/HTTPClientReceiver.cpp b/src/http/HTTPClientReceiver.cpp index 0ec5aaa4..dc1235e7 100644 --- a/src/http/HTTPClientReceiver.cpp +++ b/src/http/HTTPClientReceiver.cpp @@ -38,9 +38,6 @@ using namespace Serialisation; namespace Client { -static SoupSession* client_session = NULL; -static HTTPClientReceiver* client_receiver = NULL; - HTTPClientReceiver::HTTPClientReceiver( Shared::World* world, const std::string& url, @@ -49,15 +46,14 @@ HTTPClientReceiver::HTTPClientReceiver( , _world(world) , _url(url) { + _client_session = soup_session_sync_new(); start(false); - client_receiver = this; + assert(_client_session); } HTTPClientReceiver::~HTTPClientReceiver() { stop(); - if (client_receiver == this) - client_receiver = NULL; } HTTPClientReceiver::Listener::Listener(HTTPClientReceiver* receiver, const std::string& uri) @@ -106,21 +102,17 @@ HTTPClientReceiver::Listener::~Listener() void HTTPClientReceiver::send(SoupMessage* msg) { - if (!client_session) { - LOG(debug) << "Starting session" << endl; - client_session = soup_session_sync_new(); - } - + assert(SOUP_IS_SESSION(_client_session)); assert(SOUP_IS_MESSAGE(msg)); - soup_session_queue_message(client_session, msg, message_callback, client_receiver); + soup_session_queue_message(_client_session, msg, message_callback, this); } void HTTPClientReceiver::close_session() { - if (client_session) { - SoupSession* s = client_session; - client_session = NULL; + if (_client_session) { + SoupSession* s = _client_session; + _client_session = NULL; soup_session_abort(s); } } @@ -196,7 +188,7 @@ HTTPClientReceiver::message_callback(SoupSession* session, SoupMessage* msg, voi me->_world, me->_target.get(), Glib::ustring(msg->response_body->data), - path); + ""); } } else if (path == "/stream") { @@ -226,7 +218,7 @@ HTTPClientReceiver::start(bool dump) SoupMessage* msg = soup_message_new("GET", (_url + "/stream").c_str()); assert(SOUP_IS_MESSAGE(msg)); - soup_session_queue_message(client_session, msg, message_callback, this); + soup_session_queue_message(_client_session, msg, message_callback, this); } void diff --git a/src/http/HTTPClientReceiver.hpp b/src/http/HTTPClientReceiver.hpp index d7165c81..39407eba 100644 --- a/src/http/HTTPClientReceiver.hpp +++ b/src/http/HTTPClientReceiver.hpp @@ -45,17 +45,17 @@ public: ~HTTPClientReceiver(); - static void send(SoupMessage* msg); - static void close_session(); + void send(SoupMessage* msg); + void close_session(); std::string uri() const { return _url; } void start(bool dump); void stop(); -private: static void message_callback(SoupSession* session, SoupMessage* msg, void* ptr); +private: void update(const std::string& str); class Listener : public Raul::Thread { @@ -76,6 +76,7 @@ private: SharedPtr<ClientInterface> _target; Shared::World* _world; const std::string _url; + SoupSession* _client_session; bool _quit_flag; }; diff --git a/src/http/HTTPEngineSender.cpp b/src/http/HTTPEngineSender.cpp index 43a3d44c..674b2674 100644 --- a/src/http/HTTPEngineSender.cpp +++ b/src/http/HTTPEngineSender.cpp @@ -39,12 +39,13 @@ namespace Client { HTTPEngineSender::HTTPEngineSender(World* world, const URI& engine_url, SharedPtr<Raul::Deletable> receiver) - : _receiver(receiver) + : _receiver(PtrCast<HTTPClientReceiver>(receiver)) , _world(*world->rdf_world()) , _engine_url(engine_url) , _id(0) , _enabled(true) { + assert(_receiver); _session = soup_session_sync_new(); } @@ -57,8 +58,9 @@ void HTTPEngineSender::attach(int32_t ping_id, bool block) { LOG(debug) << "Attaching to " << _engine_url << endl; - SoupMessage* msg = soup_message_new ("GET", _engine_url.c_str()); - HTTPClientReceiver::send(msg); + SoupMessage* msg = soup_message_new("GET", _engine_url.c_str()); + soup_session_queue_message(_session, msg, + HTTPClientReceiver::message_callback, _receiver.get()); } /* *** ServerInterface implementation below here *** */ @@ -175,7 +177,7 @@ HTTPEngineSender::ping() void HTTPEngineSender::get(const URI& uri) { - if (!Raul::Path::is_path(uri) && uri.scheme() != "http") { + if (!Raul::Path::is_path(uri) && uri.scheme() != "http" && uri.scheme() != "ingen") { LOG(warn) << "Ignoring GET of non-HTTP URI " << uri << endl; return; } @@ -186,7 +188,9 @@ HTTPEngineSender::get(const URI& uri) cout << "Get " << request_uri << endl; LOG(debug) << "Get " << request_uri << endl; SoupMessage* msg = soup_message_new("GET", request_uri.c_str()); - HTTPClientReceiver::send(msg); + soup_session_queue_message(_session, msg, + HTTPClientReceiver::message_callback, _receiver.get()); + } } // namespace Client diff --git a/src/http/HTTPEngineSender.hpp b/src/http/HTTPEngineSender.hpp index 14439e39..c7296bcc 100644 --- a/src/http/HTTPEngineSender.hpp +++ b/src/http/HTTPEngineSender.hpp @@ -109,7 +109,7 @@ public: void get(const Raul::URI& uri); protected: - SharedPtr<Raul::Deletable> _receiver; + SharedPtr<HTTPClientReceiver> _receiver; SoupSession* _session; Sord::World& _world; |