#ifndef RTORRENT_CORE_HTTP_QUEUE_H #define RTORRENT_CORE_HTTP_QUEUE_H #include #include #include #include #include #include namespace core { // TODO: Remove this. class HttpQueue : private std::list { public: using base_type = std::list; using slot_curl_get = std::function; using signal_curl_get = std::list; using base_type::iterator; using base_type::const_iterator; using base_type::reverse_iterator; using base_type::const_reverse_iterator; using base_type::begin; using base_type::end; using base_type::rbegin; using base_type::rend; using base_type::empty; using base_type::size; HttpQueue() = default; ~HttpQueue() { clear(); } // Note that any slots connected to the CurlGet signals must be // pushed in front of the erase slot added by HttpQueue::insert. // // Consider adding a flag to indicate whetever HttpQueue should // delete the stream. iterator insert(const std::string& url, std::shared_ptr stream); void erase(iterator itr); void clear(); signal_curl_get& signal_insert() { return m_signal_insert; } signal_curl_get& signal_erase() { return m_signal_erase; } private: signal_curl_get m_signal_insert; signal_curl_get m_signal_erase; }; } #endif