mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-15 06:32:31 +00:00
Adding some tracker msg related stuff, download status bar.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@262 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -5,6 +5,7 @@ libsub_core_a_SOURCES = \
|
||||
curl_get.h \
|
||||
curl_stack.cc \
|
||||
curl_stack.h \
|
||||
download.cc \
|
||||
download.h \
|
||||
download_list.cc \
|
||||
download_list.h \
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#include "config.h"
|
||||
|
||||
#include "download.h"
|
||||
|
||||
#include <sigc++/bind.h>
|
||||
#include <sigc++/signal.h>
|
||||
|
||||
namespace core {
|
||||
|
||||
void
|
||||
Download::set_download(torrent::Download d) {
|
||||
m_download = d;
|
||||
|
||||
m_connTrackerSucceded = m_download.signal_tracker_succeded(sigc::bind(sigc::mem_fun(*this, &Download::receive_tracker_msg), "^_^"));
|
||||
m_connTrackerFailed = m_download.signal_tracker_failed(sigc::mem_fun(*this, &Download::receive_tracker_msg));
|
||||
}
|
||||
|
||||
void
|
||||
Download::release_download() {
|
||||
m_connTrackerSucceded.disconnect();
|
||||
m_connTrackerFailed.disconnect();
|
||||
}
|
||||
|
||||
void
|
||||
Download::receive_tracker_msg(std::string msg) {
|
||||
m_trackerMsg = msg;
|
||||
}
|
||||
|
||||
}
|
||||
+13
-3
@@ -8,10 +8,13 @@ namespace core {
|
||||
|
||||
class Download {
|
||||
public:
|
||||
Download(torrent::Download d) : m_download(d) {}
|
||||
|
||||
std::string get_hash() { return m_download.get_hash(); }
|
||||
void set_download(torrent::Download d);
|
||||
void release_download();
|
||||
|
||||
torrent::Download& get_download() { return m_download; }
|
||||
std::string get_hash() { return m_download.get_hash(); }
|
||||
|
||||
const std::string& get_tracker_msg() { return m_trackerMsg; }
|
||||
|
||||
void open() { m_download.open(); }
|
||||
void close() { m_download.close(); }
|
||||
@@ -23,7 +26,14 @@ public:
|
||||
bool operator == (const std::string& str) { return str == m_download.get_hash(); }
|
||||
|
||||
private:
|
||||
void receive_tracker_msg(std::string msg);
|
||||
|
||||
torrent::Download m_download;
|
||||
|
||||
std::string m_trackerMsg;
|
||||
|
||||
sigc::connection m_connTrackerSucceded;
|
||||
sigc::connection m_connTrackerFailed;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -11,8 +11,11 @@ namespace core {
|
||||
|
||||
DownloadList::iterator
|
||||
DownloadList::create(std::istream& str) {
|
||||
iterator itr = Base::insert(end(), torrent::download_create(str));
|
||||
torrent::Download d = torrent::download_create(str);
|
||||
|
||||
iterator itr = Base::insert(end(), Download());
|
||||
|
||||
itr->set_download(d);
|
||||
itr->get_download().signal_hash_done(sigc::bind(sigc::mem_fun(*this, &DownloadList::receive_hash_done),
|
||||
itr->get_hash()));
|
||||
|
||||
@@ -21,6 +24,8 @@ DownloadList::create(std::istream& str) {
|
||||
|
||||
void
|
||||
DownloadList::erase(iterator itr) {
|
||||
itr->release_download();
|
||||
|
||||
torrent::download_remove(itr->get_hash());
|
||||
|
||||
Base::erase(itr);
|
||||
|
||||
@@ -21,6 +21,9 @@ public:
|
||||
using Base::rbegin;
|
||||
using Base::rend;
|
||||
|
||||
using Base::empty;
|
||||
using Base::size;
|
||||
|
||||
iterator create(std::istream& str);
|
||||
void erase(iterator itr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user