From aa2f784ae6056f61713d4cc856d9d8aa4ae7adf6 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Mon, 26 Aug 2013 23:15:33 +0900 Subject: [PATCH] Converted sigc::signals to STL. --- src/core/http_queue.cc | 25 +++++++++++--------- src/core/http_queue.h | 40 ++++++++++++++++---------------- src/display/window_http_queue.cc | 10 ++++++-- src/display/window_http_queue.h | 12 ++++++---- 4 files changed, 49 insertions(+), 38 deletions(-) diff --git a/src/core/http_queue.cc b/src/core/http_queue.cc index d65d5ba2..c433a956 100644 --- a/src/core/http_queue.cc +++ b/src/core/http_queue.cc @@ -54,25 +54,28 @@ HttpQueue::insert(const std::string& url, std::iostream* s) { h->set_stream(s); h->set_timeout(5 * 60); - iterator itr = Base::insert(end(), h.get()); + iterator signal_itr = base_type::insert(end(), h.get()); - h->signal_done().push_back(std::tr1::bind(&HttpQueue::erase, this, itr)); - h->signal_failed().push_back(std::tr1::bind(&HttpQueue::erase, this, itr)); + h->signal_done().push_back(std::tr1::bind(&HttpQueue::erase, this, signal_itr)); + h->signal_failed().push_back(std::tr1::bind(&HttpQueue::erase, this, signal_itr)); - (*itr)->start(); + (*signal_itr)->start(); h.release(); - m_signalInsert.emit(*itr); - return itr; + for (signal_curl_get::iterator itr = m_signal_insert.begin(), last = m_signal_insert.end(); itr != last; itr++) + (*itr)(*signal_itr); + + return signal_itr; } void -HttpQueue::erase(iterator itr) { - m_signalErase.emit(*itr); +HttpQueue::erase(iterator signal_itr) { + for (signal_curl_get::iterator itr = m_signal_erase.begin(), last = m_signal_erase.end(); itr != last; itr++) + (*itr)(*signal_itr); - delete *itr; - Base::erase(itr); + delete *signal_itr; + base_type::erase(signal_itr); } void @@ -80,7 +83,7 @@ HttpQueue::clear() { while (!empty()) erase(begin()); - Base::clear(); + base_type::clear(); } } diff --git a/src/core/http_queue.h b/src/core/http_queue.h index 88e3df77..fee51271 100644 --- a/src/core/http_queue.h +++ b/src/core/http_queue.h @@ -39,7 +39,6 @@ #include #include -#include #include namespace core { @@ -48,22 +47,23 @@ class CurlGet; class HttpQueue : private std::list { public: - typedef std::list Base; - typedef sigc::signal1 SignalHttp; - typedef std::tr1::function slot_factory; + typedef std::list base_type; + typedef std::tr1::function slot_factory; + typedef std::tr1::function slot_curl_get; + typedef std::list signal_curl_get; - using Base::iterator; - using Base::const_iterator; - using Base::reverse_iterator; - using Base::const_reverse_iterator; + using base_type::iterator; + using base_type::const_iterator; + using base_type::reverse_iterator; + using base_type::const_reverse_iterator; - using Base::begin; - using Base::end; - using Base::rbegin; - using Base::rend; + using base_type::begin; + using base_type::end; + using base_type::rbegin; + using base_type::rend; - using Base::empty; - using Base::size; + using base_type::empty; + using base_type::size; HttpQueue() {} ~HttpQueue() { clear(); } @@ -78,15 +78,15 @@ public: void clear(); - void set_slot_factory(slot_factory s) { m_slot_factory = s; } + void set_slot_factory(slot_factory s) { m_slot_factory = s; } - SignalHttp& signal_insert() { return m_signalInsert; } - SignalHttp& signal_erase() { return m_signalErase; } + signal_curl_get& signal_insert() { return m_signal_insert; } + signal_curl_get& signal_erase() { return m_signal_erase; } private: - slot_factory m_slot_factory; - SignalHttp m_signalInsert; - SignalHttp m_signalErase; + slot_factory m_slot_factory; + signal_curl_get m_signal_insert; + signal_curl_get m_signal_erase; }; } diff --git a/src/display/window_http_queue.cc b/src/display/window_http_queue.cc index b6e3f509..90e3ca37 100644 --- a/src/display/window_http_queue.cc +++ b/src/display/window_http_queue.cc @@ -52,8 +52,14 @@ WindowHttpQueue::WindowHttpQueue(core::HttpQueue* q) : m_queue(q) { set_active(false); - m_connInsert = m_queue->signal_insert().connect(sigc::mem_fun(*this, &WindowHttpQueue::receive_insert)); - m_connErase = m_queue->signal_erase().connect(sigc::mem_fun(*this, &WindowHttpQueue::receive_erase)); + m_connInsert = m_queue->signal_insert().insert(m_queue->signal_insert().end(), + std::tr1::bind(&WindowHttpQueue::receive_insert, + this, + std::tr1::placeholders::_1)); + m_connErase = m_queue->signal_erase().insert(m_queue->signal_insert().end(), + std::tr1::bind(&WindowHttpQueue::receive_erase, + this, + std::tr1::placeholders::_1)); } void diff --git a/src/display/window_http_queue.h b/src/display/window_http_queue.h index 25e93b48..b454569d 100644 --- a/src/display/window_http_queue.h +++ b/src/display/window_http_queue.h @@ -37,7 +37,7 @@ #ifndef RTORRENT_DISPLAY_WINDOW_HTTP_QUEUE_H #define RTORRENT_DISPLAY_WINDOW_HTTP_QUEUE_H -#include +#include #include "window.h" @@ -50,8 +50,10 @@ namespace display { class WindowHttpQueue : public Window { public: + typedef std::tr1::function slot_curl_get; + typedef std::list signal_curl_get; + WindowHttpQueue(core::HttpQueue* q); - ~WindowHttpQueue() { m_connInsert.disconnect(); m_connErase.disconnect(); } virtual void redraw(); @@ -76,10 +78,10 @@ private: static std::string create_name(core::CurlGet* h); core::HttpQueue* m_queue; - sigc::connection m_connInsert; - sigc::connection m_connErase; - Container m_container; + + signal_curl_get::iterator m_connInsert; + signal_curl_get::iterator m_connErase; }; }