From 575968b291bd6a56285f9caedce740a885960535 Mon Sep 17 00:00:00 2001 From: Jari Sundell Date: Sun, 6 Nov 2011 23:14:06 +0900 Subject: [PATCH 1/3] Use new function for inserting tracker. --- src/command_download.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/command_download.cc b/src/command_download.cc index 940cb13f..18ed09c4 100644 --- a/src/command_download.cc +++ b/src/command_download.cc @@ -48,7 +48,7 @@ #include #include #include -#include +#include #include #include #include @@ -475,7 +475,7 @@ download_tracker_insert(core::Download* download, const torrent::Object::list_ty if (group < 0 || group > 32) throw torrent::input_error("Tracker group number invalid."); - download->download()->tracker_controller()->insert(group, args.back().as_string(), true); + download->download()->tracker_list()->insert_url(group, args.back().as_string(), true); return torrent::Object(); } From f4c3758dcd7a92395602e69126b4e6c5bebaba00 Mon Sep 17 00:00:00 2001 From: Jari Sundell Date: Mon, 7 Nov 2011 21:34:06 +0900 Subject: [PATCH 2/3] Added more scrape information to tracker info. --- src/command_tracker.cc | 6 ++++-- src/core/manager.cc | 4 +++- src/display/window_tracker_list.cc | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/command_tracker.cc b/src/command_tracker.cc index 6da29dea..1af9b616 100644 --- a/src/command_tracker.cc +++ b/src/command_tracker.cc @@ -72,12 +72,14 @@ initialize_command_tracker() { CMD2_TRACKER ("t.min_interval", std::bind(&torrent::Tracker::min_interval, std::placeholders::_1)); CMD2_TRACKER ("t.success_time_last", std::bind(&torrent::Tracker::success_time_last, std::placeholders::_1)); - CMD2_TRACKER ("t.failed_time_last", std::bind(&torrent::Tracker::failed_time_last, std::placeholders::_1)); - CMD2_TRACKER ("t.success_counter", std::bind(&torrent::Tracker::success_counter, std::placeholders::_1)); + + CMD2_TRACKER ("t.failed_time_last", std::bind(&torrent::Tracker::failed_time_last, std::placeholders::_1)); CMD2_TRACKER ("t.failed_counter", std::bind(&torrent::Tracker::failed_counter, std::placeholders::_1)); CMD2_TRACKER ("t.scrape_time_last", std::bind(&torrent::Tracker::scrape_time_last, std::placeholders::_1)); + CMD2_TRACKER ("t.scrape_counter", std::bind(&torrent::Tracker::scrape_counter, std::placeholders::_1)); + CMD2_TRACKER ("t.scrape_complete", std::bind(&torrent::Tracker::scrape_complete, std::placeholders::_1)); CMD2_TRACKER ("t.scrape_incomplete", std::bind(&torrent::Tracker::scrape_incomplete, std::placeholders::_1)); CMD2_TRACKER ("t.scrape_downloaded", std::bind(&torrent::Tracker::scrape_downloaded, std::placeholders::_1)); diff --git a/src/core/manager.cc b/src/core/manager.cc index b185758c..d36e78fa 100644 --- a/src/core/manager.cc +++ b/src/core/manager.cc @@ -76,6 +76,8 @@ #include "poll_manager_select.h" #include "view.h" +namespace std { using namespace tr1; } + namespace core { void @@ -204,7 +206,7 @@ Manager::get_address_throttle(const sockaddr* addr) { // Most of this should be possible to move out. void Manager::initialize_second() { - torrent::Http::set_factory(sigc::mem_fun(m_httpStack, &CurlStack::new_object)); + torrent::Http::set_factory(std::bind(&CurlStack::new_object, m_httpStack)); m_httpQueue->slot_factory(sigc::mem_fun(m_httpStack, &CurlStack::new_object)); CurlStack::global_init(); diff --git a/src/display/window_tracker_list.cc b/src/display/window_tracker_list.cc index 6ede0c52..729f4524 100644 --- a/src/display/window_tracker_list.cc +++ b/src/display/window_tracker_list.cc @@ -89,14 +89,16 @@ WindowTrackerList::redraw() { tracker->url().c_str()); if (pos < m_canvas->height()) - m_canvas->print(4, pos++, "Id: %s Failed: %u/%u Enabled: %s Open: %s S/L: %u/%u", + m_canvas->print(4, pos++, "Id: %s Counters: %uf / %us (%u) Enabled: %s Open: %s S/L/D: %u/%u/%u", rak::copy_escape_html(tracker->tracker_id()).c_str(), tracker->failed_counter(), tracker->success_counter(), + tracker->scrape_counter(), tracker->is_usable() ? "yes" : tracker->is_enabled() ? "off" : " no", tracker->is_busy() ? "yes" : " no", tracker->scrape_complete(), - tracker->scrape_incomplete()); + tracker->scrape_incomplete(), + tracker->scrape_downloaded()); // m_canvas->print(4, pos++, "Id: %s Focus: %s Enabled: %s Open: %s Timer: %u/%u", // rak::copy_escape_html(tracker->tracker_id()).c_str(), From 00a42357d08e4346838c493153eeccc32072fc43 Mon Sep 17 00:00:00 2001 From: Jari Sundell Date: Tue, 8 Nov 2011 00:45:11 +0900 Subject: [PATCH 3/3] Added 'd.tracker.send_scrape = ' command for sending scrape requests to all trackers that support it. Newly inserted downloads send scrape requests after 30 seconds. --- src/command_download.cc | 4 ++++ src/core/download.h | 3 +++ src/main.cc | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/command_download.cc b/src/command_download.cc index 18ed09c4..91c35443 100644 --- a/src/command_download.cc +++ b/src/command_download.cc @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -582,6 +583,7 @@ d_list_remove(core::Download* download, const torrent::Object& rawArgs, const ch #define CMD2_BIND_FL std::bind(&core::Download::file_list, std::placeholders::_1) #define CMD2_BIND_PL std::bind(&core::Download::c_peer_list, std::placeholders::_1) #define CMD2_BIND_TL std::bind(&core::Download::tracker_list, std::placeholders::_1) +#define CMD2_BIND_TC std::bind(&core::Download::tracker_controller, std::placeholders::_1) #define CMD2_BIND_INFO std::bind(&core::Download::info, std::placeholders::_1) #define CMD2_BIND_DATA std::bind(&core::Download::data, std::placeholders::_1) @@ -824,7 +826,9 @@ initialize_command_download() { // TODO: Deprecate 'd.tracker_focus'. CMD2_DL ("d.tracker_focus", std::bind(&core::Download::tracker_list_size, std::placeholders::_1)); CMD2_DL ("d.tracker_size", std::bind(&core::Download::tracker_list_size, std::placeholders::_1)); + CMD2_DL_LIST ("d.tracker.insert", std::bind(&download_tracker_insert, std::placeholders::_1, std::placeholders::_2)); + CMD2_DL_VALUE_V ("d.tracker.send_scrape", std::bind(&torrent::TrackerController::scrape_request, CMD2_BIND_TC, std::placeholders::_2)); CMD2_DL ("d.directory", CMD2_ON_FL(root_dir)); CMD2_DL_STRING_V("d.directory.set", std::bind(&apply_d_directory, std::placeholders::_1, std::placeholders::_2)); diff --git a/src/core/download.h b/src/core/download.h index 6939e8d8..78df4c04 100644 --- a/src/core/download.h +++ b/src/core/download.h @@ -60,6 +60,7 @@ public: typedef torrent::FileList file_list_type; typedef torrent::PeerList peer_list_type; typedef torrent::TrackerList tracker_list_type; + typedef torrent::TrackerController tracker_controller_type; typedef torrent::ConnectionList connection_list_type; typedef download_type::ConnectionType connection_type; @@ -105,6 +106,8 @@ public: tracker_list_type* tracker_list() { return m_download.tracker_list(); } uint32_t tracker_list_size() const { return m_download.tracker_list()->size(); } + tracker_controller_type* tracker_controller() { return m_download.tracker_controller(); } + connection_list_type* connection_list() { return m_download.connection_list(); } uint32_t connection_list_size() const; diff --git a/src/main.cc b/src/main.cc index ec19794a..6c207df7 100644 --- a/src/main.cc +++ b/src/main.cc @@ -247,7 +247,8 @@ main(int argc, char** argv) { "method.insert = event.download.hash_removed,multi|rlookup|static\n" "method.insert = event.download.hash_queued,multi|rlookup|static\n" - "method.set_key = event.download.inserted, 1_connect_logs, d.initialize_logs=\n" + "method.set_key = event.download.inserted, 1_connect_logs, ((d.initialize_logs))\n" + "method.set_key = event.download.inserted, 1_send_scrape, ((d.tracker.send_scrape,30))\n" "method.set_key = event.download.inserted_new, 1_prepare, \"branch=d.state=,view.set_visible=started,view.set_visible=stopped ;d.save_full_session=\"\n" "method.set_key = event.download.inserted_session, 1_prepare, \"branch=d.state=,view.set_visible=started,view.set_visible=stopped\"\n"