Added more informative tracker status display.
This commit is contained in:
parent
f486ea3dc1
commit
7787a6cf0c
32
src/core.py
32
src/core.py
|
@ -49,6 +49,7 @@
|
||||||
|
|
||||||
import pickle
|
import pickle
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import statvfs
|
import statvfs
|
||||||
import time
|
import time
|
||||||
|
@ -583,23 +584,24 @@ class Manager:
|
||||||
self.save_fastresume_data(event['unique_ID'])
|
self.save_fastresume_data(event['unique_ID'])
|
||||||
elif event['event_type'] is self.constants['EVENT_TRACKER']:
|
elif event['event_type'] is self.constants['EVENT_TRACKER']:
|
||||||
unique_ID = event['unique_ID']
|
unique_ID = event['unique_ID']
|
||||||
status = event['tracker_status']
|
tracker_status = event['tracker_status']
|
||||||
message = event['message']
|
|
||||||
tracker = message[message.find('"')+1:message.rfind('"')]
|
if tracker_status == "Alert":
|
||||||
|
match = re.search('tracker:\s*".*"\s*(.*)',
|
||||||
|
event["message"])
|
||||||
|
message = match and match.groups()[0] or ""
|
||||||
|
|
||||||
|
tracker_status += \
|
||||||
|
": %s (HTTP code=%s, times in a row=%s)" % \
|
||||||
|
(message, event["status_code"],
|
||||||
|
event["times_in_row"])
|
||||||
|
elif tracker_status == "Warning":
|
||||||
|
# Probably will need proper formatting later, not
|
||||||
|
# tested
|
||||||
|
tracker_status += ': %s' % event["message"]
|
||||||
|
|
||||||
self.set_supp_torrent_state_val(unique_ID, "tracker_status",
|
self.set_supp_torrent_state_val(unique_ID, "tracker_status",
|
||||||
(tracker, status))
|
tracker_status)
|
||||||
|
|
||||||
old_state = self.get_supp_torrent_state(unique_ID)
|
|
||||||
try:
|
|
||||||
new = old_state['tracker_messages']
|
|
||||||
except KeyError:
|
|
||||||
new = {}
|
|
||||||
|
|
||||||
new[tracker] = message
|
|
||||||
|
|
||||||
self.set_supp_torrent_state_val(unique_ID, "tracker_messages",
|
|
||||||
new)
|
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
@ -697,7 +697,7 @@ static PyObject *torrent_get_torrent_state(PyObject *self, PyObject *args)
|
||||||
total_peers = s.num_incomplete != -1? s.num_incomplete : connected_peers;
|
total_peers = s.num_incomplete != -1? s.num_incomplete : connected_peers;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Py_BuildValue("{s:s,s:i,s:i,s:l,s:l,s:f,s:f,s:f,s:L,s:L,s:b,s:s,s:s,s:f,s:L,s:L,s:l,s:i,s:i,s:L,s:L,s:i,s:l,s:l,s:b,s:b,s:L,s:L,s:L}",
|
return Py_BuildValue("{s:s,s:i,s:i,s:l,s:l,s:f,s:f,s:f,s:L,s:L,s:s,s:s,s:f,s:L,s:L,s:l,s:i,s:i,s:L,s:L,s:i,s:l,s:l,s:b,s:b,s:L,s:L,s:L}",
|
||||||
"name", t.handle.get_torrent_info().name().c_str(),
|
"name", t.handle.get_torrent_info().name().c_str(),
|
||||||
"num_files", t.handle.get_torrent_info().num_files(),
|
"num_files", t.handle.get_torrent_info().num_files(),
|
||||||
"state", s.state,
|
"state", s.state,
|
||||||
|
@ -708,7 +708,6 @@ static PyObject *torrent_get_torrent_state(PyObject *self, PyObject *args)
|
||||||
"upload_rate", s.upload_rate,
|
"upload_rate", s.upload_rate,
|
||||||
"total_download", s.total_download,
|
"total_download", s.total_download,
|
||||||
"total_upload", s.total_upload,
|
"total_upload", s.total_upload,
|
||||||
"tracker_ok", !s.current_tracker.empty(),
|
|
||||||
"next_announce", boost::posix_time::to_simple_string(s.next_announce).c_str(),
|
"next_announce", boost::posix_time::to_simple_string(s.next_announce).c_str(),
|
||||||
"tracker", s.current_tracker.c_str(),
|
"tracker", s.current_tracker.c_str(),
|
||||||
"progress", s.progress,
|
"progress", s.progress,
|
||||||
|
@ -855,13 +854,17 @@ static PyObject *torrent_pop_event(PyObject *self, PyObject *args)
|
||||||
long index = get_torrent_index(handle);
|
long index = get_torrent_index(handle);
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
int status_code = (dynamic_cast<tracker_alert*>(popped_alert))->status_code;
|
||||||
|
int times_in_row = (dynamic_cast<tracker_alert*>(popped_alert))->times_in_row;
|
||||||
|
|
||||||
if (handle_exists(handle))
|
if (handle_exists(handle))
|
||||||
return Py_BuildValue("{s:i,s:i,s:s,s:s}",
|
return Py_BuildValue("{s:i,s:i,s:s,s:i,s:i,s:s}",
|
||||||
"event_type", EVENT_TRACKER,
|
"event_type", EVENT_TRACKER,
|
||||||
"unique_ID",
|
"unique_ID",
|
||||||
M_torrents->at(index).unique_ID,
|
M_torrents->at(index).unique_ID,
|
||||||
"tracker_status", "Bad response (status code=?)",
|
"tracker_status", "Alert",
|
||||||
|
"status_code", status_code,
|
||||||
|
"times_in_row", times_in_row,
|
||||||
"message", a->msg().c_str());
|
"message", a->msg().c_str());
|
||||||
else
|
else
|
||||||
{ Py_INCREF(Py_None); return Py_None; }
|
{ Py_INCREF(Py_None); return Py_None; }
|
||||||
|
@ -891,7 +894,7 @@ static PyObject *torrent_pop_event(PyObject *self, PyObject *args)
|
||||||
"event_type", EVENT_TRACKER,
|
"event_type", EVENT_TRACKER,
|
||||||
"unique_ID",
|
"unique_ID",
|
||||||
M_torrents->at(index).unique_ID,
|
M_torrents->at(index).unique_ID,
|
||||||
"tracker_status", "Announce succeeded",
|
"tracker_status", "Announce OK",
|
||||||
"message", a->msg().c_str());
|
"message", a->msg().c_str());
|
||||||
else
|
else
|
||||||
{ Py_INCREF(Py_None); return Py_None; }
|
{ Py_INCREF(Py_None); return Py_None; }
|
||||||
|
@ -907,7 +910,7 @@ static PyObject *torrent_pop_event(PyObject *self, PyObject *args)
|
||||||
"event_type", EVENT_TRACKER,
|
"event_type", EVENT_TRACKER,
|
||||||
"unique_ID",
|
"unique_ID",
|
||||||
M_torrents->at(index).unique_ID,
|
M_torrents->at(index).unique_ID,
|
||||||
"tracker_status", "Warning in response",
|
"tracker_status", "Warning",
|
||||||
"message", a->msg().c_str());
|
"message", a->msg().c_str());
|
||||||
else
|
else
|
||||||
{ Py_INCREF(Py_None); return Py_None; }
|
{ Py_INCREF(Py_None); return Py_None; }
|
||||||
|
|
|
@ -982,7 +982,10 @@ class DelugeGTK:
|
||||||
self.wtree.get_widget("progressbar").set_text(common.fpcnt(state["progress"]))
|
self.wtree.get_widget("progressbar").set_text(common.fpcnt(state["progress"]))
|
||||||
self.text_summary_share_ratio.set_text('%.3f'%(self.calc_share_ratio(unique_id, state)))
|
self.text_summary_share_ratio.set_text('%.3f'%(self.calc_share_ratio(unique_id, state)))
|
||||||
self.text_summary_tracker.set_text(str(state["tracker"]))
|
self.text_summary_tracker.set_text(str(state["tracker"]))
|
||||||
self.text_summary_tracker_status.set_text(str(state["tracker_ok"]))
|
# At this time we still may not receive EVENT_TRACKER so there
|
||||||
|
# could be no tracker_status yet.
|
||||||
|
if "tracker_status" in state:
|
||||||
|
self.text_summary_tracker_status.set_text(state["tracker_status"])
|
||||||
self.text_summary_next_announce.set_text(str(state["next_announce"]))
|
self.text_summary_next_announce.set_text(str(state["next_announce"]))
|
||||||
self.text_summary_eta.set_text(common.estimate_eta(state))
|
self.text_summary_eta.set_text(common.estimate_eta(state))
|
||||||
elif page_num == 1: # Peers
|
elif page_num == 1: # Peers
|
||||||
|
|
Loading…
Reference in New Issue