mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-15 06:32:31 +00:00
* Replaced the old TrackerList API with the cleaned up
TrackerContainer code. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1005 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -280,7 +280,7 @@ 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++) {
|
||||
const std::string& cmd = cItr->as_string();
|
||||
torrent::Tracker* t = download->tracker_list()->get(itr);
|
||||
torrent::Tracker* t = download->tracker_list()->at(itr);
|
||||
|
||||
row.push_back(rpc::parse_command(rpc::make_target(t), cmd.c_str(), cmd.c_str() + cmd.size()).first);
|
||||
}
|
||||
@@ -477,14 +477,14 @@ initialize_command_download() {
|
||||
|
||||
ADD_CD_VALUE_UNI("chunk_size", rak::on(std::mem_fun(&core::Download::file_list), std::mem_fun(&torrent::FileList::chunk_size)));
|
||||
|
||||
ADD_CD_VALUE_MEM_BI("tracker_numwant", &core::Download::tracker_list, &torrent::TrackerList::set_numwant, &torrent::TrackerList::numwant);
|
||||
ADD_CD_VALUE_UNI("tracker_focus", rak::on(std::mem_fun(&core::Download::tracker_list), std::mem_fun(&torrent::TrackerList::focus)));
|
||||
ADD_CD_VALUE_UNI("tracker_size", rak::on(std::mem_fun(&core::Download::tracker_list), std::mem_fun(&torrent::TrackerList::size)));
|
||||
ADD_CD_VALUE_MEM_BI("tracker_numwant", &core::Download::tracker_list, &torrent::TrackerList::set_numwant, &torrent::TrackerList::numwant);
|
||||
ADD_CD_VALUE_UNI("tracker_focus", rak::on(std::mem_fun(&core::Download::tracker_list), std::mem_fun(&torrent::TrackerList::focus_index)));
|
||||
ADD_CD_VALUE_UNI("tracker_size", std::mem_fun(&core::Download::tracker_list_size));
|
||||
|
||||
ADD_CD_STRING_BI("directory", std::mem_fun(&core::Download::set_root_directory), rak::on(std::mem_fun(&core::Download::file_list), std::mem_fun(&torrent::FileList::root_dir)));
|
||||
ADD_CD_VALUE_BI("priority", std::mem_fun(&core::Download::set_priority), std::mem_fun(&core::Download::priority));
|
||||
ADD_CD_STRING_UNI("priority_str", std::ptr_fun(&retrieve_d_priority_str));
|
||||
ADD_CD_STRING_BI("directory", std::mem_fun(&core::Download::set_root_directory), rak::on(std::mem_fun(&core::Download::file_list), std::mem_fun(&torrent::FileList::root_dir)));
|
||||
ADD_CD_VALUE_BI("priority", std::mem_fun(&core::Download::set_priority), std::mem_fun(&core::Download::priority));
|
||||
ADD_CD_STRING_UNI("priority_str", std::ptr_fun(&retrieve_d_priority_str));
|
||||
|
||||
ADD_CD_SLOT_PUBLIC("f.multicall", call_list, rak::ptr_fn(&f_multicall), "i:", "")
|
||||
ADD_CD_SLOT_PUBLIC("t.multicall", call_list, rak::ptr_fn(&t_multicall), "i:", "")
|
||||
ADD_CD_SLOT_PUBLIC("f.multicall", call_list, rak::ptr_fn(&f_multicall), "i:", "")
|
||||
ADD_CD_SLOT_PUBLIC("t.multicall", call_list, rak::ptr_fn(&t_multicall), "i:", "")
|
||||
}
|
||||
|
||||
@@ -122,13 +122,8 @@ void apply_encoding_list(const std::string& arg) { torrent::encoding_list()->pus
|
||||
void
|
||||
apply_enable_trackers(int64_t arg) {
|
||||
for (core::Manager::DListItr itr = control->core()->download_list()->begin(), last = control->core()->download_list()->end(); itr != last; ++itr) {
|
||||
torrent::TrackerList tl = (*itr)->download()->tracker_list();
|
||||
|
||||
for (int i = 0, last = tl.size(); i < last; ++i)
|
||||
if (arg)
|
||||
tl.get(i)->enable();
|
||||
else
|
||||
tl.get(i)->disable();
|
||||
std::for_each((*itr)->tracker_list()->begin(), (*itr)->tracker_list()->end(),
|
||||
arg ? std::mem_fun(&torrent::Tracker::enable) : std::mem_fun(&torrent::Tracker::disable));
|
||||
|
||||
if (arg && !rpc::call_command_value("get_use_udp_trackers"))
|
||||
(*itr)->enable_udp_trackers(false);
|
||||
@@ -149,7 +144,7 @@ xmlrpc_find_tracker(core::Download* download, uint32_t index) {
|
||||
if (index >= download->tracker_list()->size())
|
||||
return NULL;
|
||||
|
||||
return download->tracker_list()->get(index);
|
||||
return download->tracker_list()->at(index);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -58,8 +58,6 @@ namespace core {
|
||||
|
||||
Download::Download(download_type d) :
|
||||
m_download(d),
|
||||
m_trackerList(d.tracker_list()),
|
||||
|
||||
m_hashFailed(false),
|
||||
|
||||
m_chunksFailed(0),
|
||||
@@ -85,14 +83,12 @@ Download::~Download() {
|
||||
|
||||
void
|
||||
Download::enable_udp_trackers(bool state) {
|
||||
torrent::TrackerList tl = m_download.tracker_list();
|
||||
|
||||
for (int i = 0, last = tl.size(); i < last; ++i)
|
||||
if (tl.get(i)->type() == torrent::Tracker::TRACKER_UDP)
|
||||
for (torrent::TrackerList::iterator itr = m_download.tracker_list()->begin(), last = m_download.tracker_list()->end(); itr != last; ++itr)
|
||||
if ((*itr)->type() == torrent::Tracker::TRACKER_UDP)
|
||||
if (state)
|
||||
tl.get(i)->enable();
|
||||
(*itr)->enable();
|
||||
else
|
||||
tl.get(i)->disable();
|
||||
(*itr)->disable();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
|
||||
+2
-2
@@ -88,7 +88,8 @@ public:
|
||||
const file_list_type* c_file_list() const { return m_download.file_list(); }
|
||||
|
||||
torrent::Object* bencode() { return m_download.bencode(); }
|
||||
tracker_list_type* tracker_list() { return &m_trackerList; }
|
||||
tracker_list_type* tracker_list() { return m_download.tracker_list(); }
|
||||
uint32_t tracker_list_size() const { return m_download.tracker_list()->size(); }
|
||||
|
||||
const std::string& message() const { return m_message; }
|
||||
void set_message(const std::string& msg) { m_message = msg; }
|
||||
@@ -120,7 +121,6 @@ private:
|
||||
|
||||
// Store the FileList instance so we can use slots etc on it.
|
||||
download_type m_download;
|
||||
tracker_list_type m_trackerList;
|
||||
|
||||
bool m_hashFailed;
|
||||
|
||||
|
||||
@@ -269,7 +269,7 @@ DownloadList::close_quick(Download* download) {
|
||||
// handled by some parameter to the close function, or some other
|
||||
// way of giving the client more control of when STOPPED requests
|
||||
// are sent.
|
||||
download->download()->tracker_list().manual_cancel();
|
||||
download->download()->tracker_list()->manual_cancel();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -607,7 +607,7 @@ DownloadList::confirm_finished(Download* download) {
|
||||
|
||||
// Send the completed request before resuming so we don't reset the
|
||||
// up/downloaded baseline.
|
||||
download->download()->tracker_list().send_completed();
|
||||
download->download()->tracker_list()->send_completed();
|
||||
|
||||
std::for_each(slot_map_finished().begin(), slot_map_finished().end(), download_list_call(download));
|
||||
|
||||
|
||||
@@ -188,11 +188,11 @@ print_download_status(char* first, char* last, core::Download* d) {
|
||||
first = print_buffer(first, last, "Checking hash [%2i%%]",
|
||||
(d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
|
||||
|
||||
} else if (d->tracker_list()->is_busy() && d->tracker_list()->focus() < d->tracker_list()->size()) {
|
||||
} else if (d->tracker_list()->has_active() && d->tracker_list()->focus() < d->tracker_list()->end()) {
|
||||
torrent::TrackerList* tl = d->tracker_list();
|
||||
|
||||
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->focus())->group(), tl->focus_index(), (*tl->focus())->url().c_str());
|
||||
|
||||
} else if (!d->message().empty()) {
|
||||
first = print_buffer(first, last, "%s", d->message().c_str());
|
||||
|
||||
@@ -83,8 +83,8 @@ WindowDownloadStatusbar::redraw() {
|
||||
|
||||
position = print_download_status(buffer, last, m_download);
|
||||
m_canvas->print(0, 2, "[%c:%i] %s",
|
||||
m_download->tracker_list()->is_busy() ? 'C' : ' ',
|
||||
(int)(m_download->download()->tracker_list().timeout() / 1000000),
|
||||
m_download->tracker_list()->has_active() ? 'C' : ' ',
|
||||
(int)(m_download->download()->tracker_list()->time_next_connection()),
|
||||
buffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ WindowTrackerList::redraw() {
|
||||
Range range = rak::advance_bidirectional<unsigned int>(0, *m_focus, tl->size(), (m_canvas->height() + 1) / 2);
|
||||
|
||||
while (range.first != range.second) {
|
||||
torrent::Tracker* tracker = tl->get(range.first);
|
||||
torrent::Tracker* tracker = tl->at(range.first);
|
||||
|
||||
// m_canvas->print(0, pos, "[%c] [S/L %5i/%5i] %s",
|
||||
// tracker->is_enabled() ? (tracker->is_open() ? '*' : ' ') : '-',
|
||||
@@ -90,7 +90,7 @@ WindowTrackerList::redraw() {
|
||||
|
||||
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(),
|
||||
range.first == tl->focus() ? "yes" : " no",
|
||||
range.first == tl->focus_index() ? "yes" : " no",
|
||||
tracker->is_enabled() ? "yes" : " no",
|
||||
tracker->is_busy() ? "yes" : " no",
|
||||
tracker->scrape_complete(),
|
||||
|
||||
@@ -103,7 +103,7 @@ ElementTrackerList::receive_disable() {
|
||||
if (m_window == NULL)
|
||||
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()->at(m_focus);
|
||||
|
||||
if (t->is_enabled())
|
||||
t->disable();
|
||||
@@ -118,7 +118,7 @@ ElementTrackerList::receive_next() {
|
||||
if (m_window == NULL)
|
||||
throw torrent::internal_error("ui::ElementTrackerList::receive_next(...) called on a disabled object");
|
||||
|
||||
if (++m_focus >= m_download->download()->tracker_list().size())
|
||||
if (++m_focus >= m_download->download()->tracker_list()->size())
|
||||
m_focus = 0;
|
||||
|
||||
m_window->mark_dirty();
|
||||
@@ -129,13 +129,13 @@ ElementTrackerList::receive_prev() {
|
||||
if (m_window == NULL)
|
||||
throw torrent::internal_error("ui::ElementTrackerList::receive_prev(...) called on a disabled object");
|
||||
|
||||
if (m_download->download()->tracker_list().size() == 0)
|
||||
if (m_download->download()->tracker_list()->size() == 0)
|
||||
return;
|
||||
|
||||
if (m_focus != 0)
|
||||
--m_focus;
|
||||
else
|
||||
m_focus = m_download->download()->tracker_list().size() - 1;
|
||||
m_focus = m_download->download()->tracker_list()->size() - 1;
|
||||
|
||||
m_window->mark_dirty();
|
||||
}
|
||||
@@ -145,12 +145,12 @@ ElementTrackerList::receive_cycle_group() {
|
||||
if (m_window == NULL)
|
||||
throw torrent::internal_error("ui::ElementTrackerList::receive_group_cycle(...) called on a disabled object");
|
||||
|
||||
torrent::TrackerList tl = m_download->download()->tracker_list();
|
||||
torrent::TrackerList* tl = m_download->tracker_list();
|
||||
|
||||
if (m_focus >= tl.size())
|
||||
if (m_focus >= tl->size())
|
||||
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->at(m_focus)->group());
|
||||
|
||||
m_window->mark_dirty();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user