Skip to content

Commit

Permalink
Refactoring tracker code.
Browse files Browse the repository at this point in the history
  • Loading branch information
rakshasa committed Oct 11, 2011
1 parent 7a5a888 commit 8e9f692
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 14 deletions.
6 changes: 6 additions & 0 deletions src/torrent/tracker_controller.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ namespace torrent {
TrackerController::TrackerController(TrackerList* trackers) :
m_flags(0),
m_tracker_list(trackers),
m_failed_requests(0),
m_task_timeout(new rak::priority_item()) {
}

Expand All @@ -55,9 +56,12 @@ TrackerController::~TrackerController() {

void
TrackerController::close() {
m_failed_requests = 0;

stop_requesting();

m_tracker_list->close_all();
priority_queue_erase(&taskScheduler, m_task_timeout);
}

void
Expand All @@ -82,6 +86,8 @@ TrackerController::stop_requesting() {

void
TrackerController::receive_success(Tracker* tb, TrackerController::address_list* l) {
m_failed_requests = 0;

m_slot_success(l);
}

Expand Down
5 changes: 5 additions & 0 deletions src/torrent/tracker_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ class LIBTORRENT_EXPORT TrackerController {
TrackerList* tracker_list() { return m_tracker_list; }
TrackerList* tracker_list() const { return m_tracker_list; }

uint32_t failed_requests() const { return m_failed_requests; }

//protected:
void close();

Expand All @@ -87,11 +89,14 @@ class LIBTORRENT_EXPORT TrackerController {

// TEMP:
rak::priority_item* task_timeout() { return m_task_timeout; }
void set_failed_requests(uint32_t value) { m_failed_requests = value; }

private:
int m_flags;
TrackerList* m_tracker_list;

uint32_t m_failed_requests;

slot_address_list m_slot_success;
slot_string m_slot_failure;

Expand Down
15 changes: 2 additions & 13 deletions src/tracker/tracker_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ TrackerManager::TrackerManager() :

m_numRequests(0),
m_maxRequests(4),
m_failedRequests(0),
m_initialTracker(0) {

m_tracker_controller = new TrackerController(m_tracker_list);
Expand All @@ -77,14 +76,6 @@ TrackerManager::~TrackerManager() {
delete m_tracker_controller;
}

void
TrackerManager::close() {
m_failedRequests = 0;

m_tracker_controller->close();
priority_queue_erase(&taskScheduler, m_tracker_controller->task_timeout());
}

void
TrackerManager::send_start() {
close();
Expand Down Expand Up @@ -213,8 +204,6 @@ TrackerManager::receive_timeout() {

void
TrackerManager::receive_success(AddressList* l) {
m_failedRequests = 0;

if (m_tracker_list->state() == DownloadInfo::STOPPED || !m_tracker_controller->is_active())
return m_tracker_controller->slot_success()(l);

Expand Down Expand Up @@ -268,10 +257,10 @@ TrackerManager::receive_failed(const std::string& msg) {

if (m_tracker_list->focus() == m_tracker_list->end()) {
// Tried all the trackers, start from the beginning.
m_failedRequests++;
m_tracker_controller->set_failed_requests(m_tracker_controller->failed_requests() + 1);
m_tracker_list->set_focus(m_tracker_list->begin());

retry_seconds = std::min<unsigned int>(300, 3 + 20 * m_failedRequests);
retry_seconds = std::min<unsigned int>(300, 3 + 20 * m_tracker_controller->failed_requests());
}

priority_queue_insert(&taskScheduler, m_tracker_controller->task_timeout(), (cachedTime + rak::timer::from_seconds(retry_seconds)).round_seconds());
Expand Down
1 change: 0 additions & 1 deletion src/tracker/tracker_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ class TrackerManager {

uint32_t m_numRequests;
uint32_t m_maxRequests;
uint32_t m_failedRequests;

uint32_t m_initialTracker;
};
Expand Down
3 changes: 3 additions & 0 deletions test/torrent/tracker_controller_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ tracker_controller_test::test_basic() {
torrent::TrackerController tracker_controller(NULL);

CPPUNIT_ASSERT(tracker_controller.flags() == 0);
CPPUNIT_ASSERT(tracker_controller.failed_requests() == 0);
CPPUNIT_ASSERT(!tracker_controller.is_active());
CPPUNIT_ASSERT(!tracker_controller.is_requesting());
}
Expand Down Expand Up @@ -76,9 +77,11 @@ tracker_controller_test::test_single_success() {
CPPUNIT_ASSERT(tracker_0_0->trigger_success());

CPPUNIT_ASSERT(success_counter == 1 && failure_counter == 0);
CPPUNIT_ASSERT(tracker_controller.failed_requests() == 0);

tracker_list.send_state_idx(0, 2);
CPPUNIT_ASSERT(tracker_0_0->trigger_failure());

CPPUNIT_ASSERT(success_counter == 1 && failure_counter == 1);
// CPPUNIT_ASSERT(tracker_controller.failed_requests() == 1);
}

0 comments on commit 8e9f692

Please sign in to comment.