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:
rakshasa
2005-02-08 22:06:57 +00:00
parent b01cd17a72
commit f7144a333f
12 changed files with 197 additions and 38 deletions
+1
View File
@@ -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 \
+29
View File
@@ -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
View File
@@ -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;
};
}
+6 -1
View File
@@ -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);
+3
View File
@@ -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);