* New Tracker API.

git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1002 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2007-11-02 10:47:12 +00:00
parent c326c7f43a
commit 4a2ae4d339
7 changed files with 32 additions and 36 deletions
+2 -2
View File
@@ -280,9 +280,9 @@ t_multicall(core::Download* download, const torrent::Object& rawArgs) {
for (torrent::Object::list_const_iterator cItr = ++args.begin(), cLast = args.end(); cItr != args.end(); cItr++) { for (torrent::Object::list_const_iterator cItr = ++args.begin(), cLast = args.end(); cItr != args.end(); cItr++) {
const std::string& cmd = cItr->as_string(); const std::string& cmd = cItr->as_string();
torrent::Tracker t = download->tracker_list()->get(itr); torrent::Tracker* t = download->tracker_list()->get(itr);
row.push_back(rpc::parse_command(rpc::make_target(&t), cmd.c_str(), cmd.c_str() + cmd.size()).first); row.push_back(rpc::parse_command(rpc::make_target(t), cmd.c_str(), cmd.c_str() + cmd.size()).first);
} }
} }
+3 -7
View File
@@ -126,9 +126,9 @@ apply_enable_trackers(int64_t arg) {
for (int i = 0, last = tl.size(); i < last; ++i) for (int i = 0, last = tl.size(); i < last; ++i)
if (arg) if (arg)
tl.get(i).enable(); tl.get(i)->enable();
else else
tl.get(i).disable(); tl.get(i)->disable();
if (arg && !rpc::call_command_value("get_use_udp_trackers")) if (arg && !rpc::call_command_value("get_use_udp_trackers"))
(*itr)->enable_udp_trackers(false); (*itr)->enable_udp_trackers(false);
@@ -149,11 +149,7 @@ xmlrpc_find_tracker(core::Download* download, uint32_t index) {
if (index >= download->tracker_list()->size()) if (index >= download->tracker_list()->size())
return NULL; return NULL;
// HACK ALERT!!!! return download->tracker_list()->get(index);
static torrent::Tracker hack;
hack = download->tracker_list()->get(index);
return &hack;
} }
void void
+2 -2
View File
@@ -85,10 +85,10 @@ void
initialize_command_tracker() { initialize_command_tracker() {
ADD_CT_STRING_UNI("url", std::mem_fun(&torrent::Tracker::url)); ADD_CT_STRING_UNI("url", std::mem_fun(&torrent::Tracker::url));
ADD_CT_VOID_UNI("group", std::mem_fun(&torrent::Tracker::group)); ADD_CT_VOID_UNI("group", std::mem_fun(&torrent::Tracker::group));
ADD_CT_VOID_UNI("type", std::mem_fun(&torrent::Tracker::tracker_type)); ADD_CT_VOID_UNI("type", std::mem_fun(&torrent::Tracker::type));
ADD_CT_STRING_UNI("id", std::mem_fun(&torrent::Tracker::tracker_id)); ADD_CT_STRING_UNI("id", std::mem_fun(&torrent::Tracker::tracker_id));
ADD_CT_VOID("is_open", std::mem_fun(&torrent::Tracker::is_open)); ADD_CT_VOID("is_open", std::mem_fun(&torrent::Tracker::is_busy));
ADD_CT_BOOL("enabled", std::ptr_fun(&apply_t_set_enabled), std::mem_fun(&torrent::Tracker::is_enabled)); ADD_CT_BOOL("enabled", std::ptr_fun(&apply_t_set_enabled), std::mem_fun(&torrent::Tracker::is_enabled));
ADD_CT_VOID_UNI("normal_interval", std::mem_fun(&torrent::Tracker::normal_interval)); ADD_CT_VOID_UNI("normal_interval", std::mem_fun(&torrent::Tracker::normal_interval));
+3 -3
View File
@@ -88,11 +88,11 @@ Download::enable_udp_trackers(bool state) {
torrent::TrackerList tl = m_download.tracker_list(); torrent::TrackerList tl = m_download.tracker_list();
for (int i = 0, last = tl.size(); i < last; ++i) for (int i = 0, last = tl.size(); i < last; ++i)
if (tl.get(i).tracker_type() == torrent::Tracker::TRACKER_UDP) if (tl.get(i)->type() == torrent::Tracker::TRACKER_UDP)
if (state) if (state)
tl.get(i).enable(); tl.get(i)->enable();
else else
tl.get(i).disable(); tl.get(i)->disable();
} }
uint32_t uint32_t
+1 -1
View File
@@ -192,7 +192,7 @@ print_download_status(char* first, char* last, core::Download* d) {
torrent::TrackerList* tl = d->tracker_list(); torrent::TrackerList* tl = d->tracker_list();
first = print_buffer(first, last, "Tracker[%i:%i]: Connecting to %s", first = print_buffer(first, last, "Tracker[%i:%i]: Connecting to %s",
tl->get(tl->focus()).group(), tl->focus(), tl->get(tl->focus()).url().c_str()); tl->get(tl->focus())->group(), tl->focus(), tl->get(tl->focus())->url().c_str());
} else if (!d->message().empty()) { } else if (!d->message().empty()) {
first = print_buffer(first, last, "%s", d->message().c_str()); first = print_buffer(first, last, "%s", d->message().c_str());
+16 -16
View File
@@ -75,34 +75,34 @@ WindowTrackerList::redraw() {
Range range = rak::advance_bidirectional<unsigned int>(0, *m_focus, tl->size(), (m_canvas->height() + 1) / 2); Range range = rak::advance_bidirectional<unsigned int>(0, *m_focus, tl->size(), (m_canvas->height() + 1) / 2);
while (range.first != range.second) { while (range.first != range.second) {
torrent::Tracker tracker = tl->get(range.first); torrent::Tracker* tracker = tl->get(range.first);
// m_canvas->print(0, pos, "[%c] [S/L %5i/%5i] %s", // m_canvas->print(0, pos, "[%c] [S/L %5i/%5i] %s",
// tracker.is_enabled() ? (tracker.is_open() ? '*' : ' ') : '-', // tracker->is_enabled() ? (tracker->is_open() ? '*' : ' ') : '-',
// tracker.scrape_complete(), tracker.scrape_incomplete(), // tracker->scrape_complete(), tracker->scrape_incomplete(),
// tracker.url().c_str()); // tracker->url().c_str());
if (tracker.group() == group) if (tracker->group() == group)
m_canvas->print(0, pos, "%2i:", group++); m_canvas->print(0, pos, "%2i:", group++);
m_canvas->print(4, pos++, "%s", m_canvas->print(4, pos++, "%s",
tracker.url().c_str()); tracker->url().c_str());
m_canvas->print(4, pos++, "Id: %s Focus: %s Enabled: %s Open: %s S/L: %u/%u", m_canvas->print(4, pos++, "Id: %s Focus: %s Enabled: %s Open: %s S/L: %u/%u",
rak::copy_escape_html(tracker.tracker_id()).c_str(), rak::copy_escape_html(tracker->tracker_id()).c_str(),
range.first == tl->focus() ? "yes" : " no", range.first == tl->focus() ? "yes" : " no",
tracker.is_enabled() ? "yes" : " no", tracker->is_enabled() ? "yes" : " no",
tracker.is_open() ? "yes" : " no", tracker->is_busy() ? "yes" : " no",
tracker.scrape_complete(), tracker->scrape_complete(),
tracker.scrape_incomplete()); tracker->scrape_incomplete());
// m_canvas->print(4, pos++, "Id: %s Focus: %s Enabled: %s Open: %s Timer: %u/%u", // 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(), // rak::copy_escape_html(tracker->tracker_id()).c_str(),
// range.first == tl->focus() ? "yes" : " no", // range.first == tl->focus() ? "yes" : " no",
// tracker.is_enabled() ? "yes" : " no", // tracker->is_enabled() ? "yes" : " no",
// tracker.is_open() ? "yes" : " no", // tracker->is_open() ? "yes" : " no",
// tracker.normal_interval(), // tracker->normal_interval(),
// tracker.min_interval()); // tracker->min_interval());
if (range.first == *m_focus) { if (range.first == *m_focus) {
m_canvas->set_attr(0, pos - 2, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0)); m_canvas->set_attr(0, pos - 2, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0));
+5 -5
View File
@@ -103,12 +103,12 @@ ElementTrackerList::receive_disable() {
if (m_window == NULL) if (m_window == NULL)
throw torrent::internal_error("ui::ElementTrackerList::receive_disable(...) called on a disabled object"); throw torrent::internal_error("ui::ElementTrackerList::receive_disable(...) called on a disabled object");
torrent::Tracker t = m_download->download()->tracker_list().get(m_focus); torrent::Tracker* t = m_download->download()->tracker_list().get(m_focus);
if (t.is_enabled()) if (t->is_enabled())
t.disable(); t->disable();
else else
t.enable(); t->enable();
m_window->mark_dirty(); m_window->mark_dirty();
} }
@@ -150,7 +150,7 @@ ElementTrackerList::receive_cycle_group() {
if (m_focus >= tl.size()) if (m_focus >= tl.size())
throw torrent::internal_error("ui::ElementTrackerList::receive_group_cycle(...) called with an invalid focus"); throw torrent::internal_error("ui::ElementTrackerList::receive_group_cycle(...) called with an invalid focus");
tl.cycle_group(tl.get(m_focus).group()); tl.cycle_group(tl.get(m_focus)->group());
m_window->mark_dirty(); m_window->mark_dirty();
} }