This commit is contained in:
parent
1aeeed6972
commit
a4f628747f
|
@ -53,8 +53,8 @@ DHT_FILENAME = "dht.state"
|
||||||
|
|
||||||
TORRENT_STATE_EXPIRATION = 1 # seconds, like the output of time.time()
|
TORRENT_STATE_EXPIRATION = 1 # seconds, like the output of time.time()
|
||||||
|
|
||||||
DEFAULT_PREFS = {
|
|
||||||
# "max_half_open" : -1,
|
# "max_half_open" : -1,
|
||||||
|
DEFAULT_PREFS = {
|
||||||
"max_uploads" : 2, # a.k.a. upload slots
|
"max_uploads" : 2, # a.k.a. upload slots
|
||||||
"listen_on" : [6881,9999],
|
"listen_on" : [6881,9999],
|
||||||
"max_connections" : 80,
|
"max_connections" : 80,
|
||||||
|
@ -65,6 +65,18 @@ DEFAULT_PREFS = {
|
||||||
"max_upload_rate" : -1
|
"max_upload_rate" : -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PREF_FUNCTIONS = {
|
||||||
|
"max_uploads" : pytorrent_core.set_max_uploads,
|
||||||
|
"listen_on" : pytorrent_core.set_listen_on,
|
||||||
|
"max_connections" : pytorrent_core.set_max_connections,
|
||||||
|
"use_DHT" : None, # not a normal pref in that is is applied only on start
|
||||||
|
"max_active_torrents" : None, # no need for a function, applied constantly
|
||||||
|
"auto_seed_ratio" : None, # no need for a function, applied constantly
|
||||||
|
"max_download_rate" : pytorrent_core.set_download_rate_limit,
|
||||||
|
"max_upload_rate" : pytorrent_core.set_upload_rate_limit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Exception
|
# Exception
|
||||||
|
|
||||||
class PyTorrentError(Exception):
|
class PyTorrentError(Exception):
|
||||||
|
@ -228,7 +240,9 @@ class manager:
|
||||||
|
|
||||||
self.prefs[key] = value
|
self.prefs[key] = value
|
||||||
|
|
||||||
self.apply_prefs()
|
# Apply the pref, if applicable
|
||||||
|
if PREF_FUNCTIONS[key] is not None:
|
||||||
|
PREF_FUNCTIONS[key](value)
|
||||||
|
|
||||||
# Torrent addition and removal functions
|
# Torrent addition and removal functions
|
||||||
|
|
||||||
|
@ -514,16 +528,11 @@ class manager:
|
||||||
|
|
||||||
def apply_prefs(self):
|
def apply_prefs(self):
|
||||||
print "Applying preferences"
|
print "Applying preferences"
|
||||||
pytorrent_core.set_download_rate_limit(self.get_pref('max_download_rate'))
|
assert(len(PREF_FUNCTIONS) == len(DEFAULT_PREFS))
|
||||||
|
|
||||||
pytorrent_core.set_upload_rate_limit(self.get_pref('max_upload_rate'))
|
for pref in PREF_FUNCTIONS.keys():
|
||||||
|
if PREF_FUNCTIONS[pref] is not None:
|
||||||
pytorrent_core.set_listen_on(self.get_pref('listen_on')[0],
|
PREF_FUNCTIONS[pref](self.get_pref(pref))
|
||||||
self.get_pref('listen_on')[1])
|
|
||||||
|
|
||||||
pytorrent_core.set_max_connections(self.get_pref('max_connections'))
|
|
||||||
|
|
||||||
pytorrent_core.set_max_uploads(self.get_pref('max_uploads'))
|
|
||||||
|
|
||||||
def calc_ratio(self, unique_ID, torrent_state):
|
def calc_ratio(self, unique_ID, torrent_state):
|
||||||
up = float(torrent_state['total_upload'] + self.unique_IDs[unique_ID].uploaded_memory)
|
up = float(torrent_state['total_upload'] + self.unique_IDs[unique_ID].uploaded_memory)
|
||||||
|
|
|
@ -413,11 +413,12 @@ static PyObject *torrent_set_upload_rate_limit(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
static PyObject *torrent_set_listen_on(PyObject *self, PyObject *args)
|
static PyObject *torrent_set_listen_on(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
python_long port_start, port_end;
|
PyObject *port_vec;
|
||||||
if (!PyArg_ParseTuple(args, "ii", &port_start, &port_end))
|
if (!PyArg_ParseTuple(args, "O", &port_vec))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
M_ses->listen_on(std::make_pair(port_start, port_end), "");
|
M_ses->listen_on(std::make_pair( PyInt_AsLong(PyList_GetItem(port_vec, 0)),
|
||||||
|
PyInt_AsLong(PyList_GetItem(port_vec, 1))), "");
|
||||||
|
|
||||||
Py_INCREF(Py_None); return Py_None;
|
Py_INCREF(Py_None); return Py_None;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +578,7 @@ static PyObject *torrent_get_torrent_state(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
return Py_BuildValue("{s:s,s:l,s:l,s:l,s:l,s:f,s:f,s:d,s:f,s:l,s:l,s:s,s:s,s:f,s:d,s:l,s:l,s:l,s:d,s:l,s:l,s:l,s:l,s:l,s:l,s:d,s:d,s:l,s:l}",
|
return Py_BuildValue("{s:s,s:l,s:l,s:l,s:l,s:f,s:f,s:d,s:f,s:l,s:l,s:s,s:s,s:f,s:d,s:l,s:l,s:l,s:d,s:l,s:l,s:l,s:l,s:l,s:l,s:d,s:d,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,
|
||||||
"num_peers", s.num_peers,
|
"num_peers", s.num_peers,
|
||||||
"num_seeds", s.num_seeds,
|
"num_seeds", s.num_seeds,
|
||||||
|
|
Loading…
Reference in New Issue