r197 - in /debtorrent/trunk: ./ DebTorrent/ DebTorrent/BT1/
camrdale-guest at users.alioth.debian.org
camrdale-guest at users.alioth.debian.org
Sat Aug 4 20:48:51 UTC 2007
Author: camrdale-guest
Date: Sat Aug 4 20:48:51 2007
New Revision: 197
URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=197
Log:
Change to module-level loggers.
Modified:
debtorrent/trunk/DebTorrent/BT1/AptListener.py
debtorrent/trunk/DebTorrent/BT1/Connecter.py
debtorrent/trunk/DebTorrent/BT1/Encrypter.py
debtorrent/trunk/DebTorrent/BT1/FileSelector.py
debtorrent/trunk/DebTorrent/BT1/HTTPDownloader.py
debtorrent/trunk/DebTorrent/BT1/Rerequester.py
debtorrent/trunk/DebTorrent/BT1/Storage.py
debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py
debtorrent/trunk/DebTorrent/BT1/StreamCheck.py
debtorrent/trunk/DebTorrent/BT1/T2T.py
debtorrent/trunk/DebTorrent/BT1/makemetafile.py
debtorrent/trunk/DebTorrent/BT1/track.py
debtorrent/trunk/DebTorrent/HTTPCache.py
debtorrent/trunk/DebTorrent/HTTPHandler.py
debtorrent/trunk/DebTorrent/RateLimiter.py
debtorrent/trunk/DebTorrent/RawServer.py
debtorrent/trunk/DebTorrent/SocketHandler.py
debtorrent/trunk/DebTorrent/bencode.py
debtorrent/trunk/DebTorrent/inifile.py
debtorrent/trunk/DebTorrent/iprangeparse.py
debtorrent/trunk/DebTorrent/launchmanycore.py
debtorrent/trunk/DebTorrent/parsedir.py
debtorrent/trunk/DebTorrent/piecebuffer.py
debtorrent/trunk/DebTorrent/subnetparse.py
debtorrent/trunk/DebTorrent/torrentlistparse.py
debtorrent/trunk/debtorrent-client.py
Modified: debtorrent/trunk/DebTorrent/BT1/AptListener.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/AptListener.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/AptListener.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/AptListener.py Sat Aug 4 20:48:51 2007
@@ -5,6 +5,8 @@
"""Listen for download requests from Apt.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type alas: C{string}
@var alas: the message to send when the data is not found
@type VERSION: C{string}
@@ -30,6 +32,8 @@
from DebTorrent.HTTPCache import HTTPCache
import os, logging
from DebTorrent.__init__ import version, product_name,version_short
+
+logger = logging.getLogger('DebTorrent.BT1.AptListener')
VERSION = product_name+'/'+version_short
@@ -120,7 +124,7 @@
self.favicon = h.read()
h.close()
except:
- logging.warning('specified favicon file does not exist.')
+ logger.warning('specified favicon file does not exist.')
self.rawserver = rawserver
self.state = {}
@@ -161,7 +165,7 @@
assert not self.request_queue.has_key(connection)
- logging.info('queueing request as file '+str(file_num)+' needs pieces: '+str(pieces_needed))
+ logger.info('queueing request as file '+str(file_num)+' needs pieces: '+str(pieces_needed))
self.request_queue[connection] = (downloader, file_num, pieces_needed, clock())
@@ -181,12 +185,12 @@
# Remove the downloaded pieces from the list of needed ones
for piece in list(v[2]):
if v[0].storagewrapper.do_I_have(piece):
- logging.debug('queued request for file '+str(v[1])+' got piece '+str(piece))
+ logger.debug('queued request for file '+str(v[1])+' got piece '+str(piece))
v[2].remove(piece)
# If no more pieces are needed, return the answer and remove the request
if not v[2]:
- logging.info('queued request for file '+str(v[1])+' is complete')
+ logger.info('queued request for file '+str(v[1])+' is complete')
del self.request_queue[c]
self.answer_package(c, v[0], v[1])
@@ -293,7 +297,7 @@
'</html>\n')
return (200, 'OK', {'Server': VERSION, 'Content-Type': 'text/html; charset=iso-8859-1'}, s.getvalue())
except:
- logging.exception('Error returning info_page')
+ logger.exception('Error returning info_page')
return (500, 'Internal Server Error', {'Server': VERSION, 'Content-Type': 'text/html; charset=iso-8859-1'}, 'Server Error')
@@ -368,7 +372,7 @@
connections = self.cache_waiting.pop('/'.join(path), None)
if connections is None:
- logging.warning('no connection exists to return the cached file on')
+ logger.warning('no connection exists to return the cached file on')
return
# If it's a torrent file, start it
@@ -461,7 +465,7 @@
return
# Something strange has happened, requeue it
- logging.warning('requeuing request for file '+str(f)+' as it still needs pieces: '+str(pieces_needed))
+ logger.warning('requeuing request for file '+str(f)+' as it still needs pieces: '+str(pieces_needed))
self.enqueue_request(connection, d, f, pieces_needed)
@@ -489,7 +493,7 @@
assert data[:8] == "Package:"
h = data.split('\n')
except:
- logging.warning('Packages file could not be converted to a torrent')
+ logger.warning('Packages file could not be converted to a torrent')
return
sub_pieces = getsubpieces('_'.join(path))
@@ -683,7 +687,7 @@
self.allowed_IPs.read_fieldlist(f)
self.allowed_ip_mtime = os.path.getmtime(f)
except (IOError, OSError):
- logging.warning('unable to read allowed_IP list')
+ logger.warning('unable to read allowed_IP list')
f = self.config['banned_ips']
if f and self.banned_ip_mtime != os.path.getmtime(f):
@@ -692,7 +696,7 @@
self.banned_IPs.read_rangelist(f)
self.banned_ip_mtime = os.path.getmtime(f)
except (IOError, OSError):
- logging.warning('unable to read banned_IP list')
+ logger.warning('unable to read banned_IP list')
def size_format(s):
Modified: debtorrent/trunk/DebTorrent/BT1/Connecter.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Connecter.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Connecter.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Connecter.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""For maintaining connections to peers.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type CHOKE: C{char}
@var CHOKE: the code for choke messages
@type UNCHOKE: C{char}
@@ -37,6 +39,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.BT1.Connecter')
def toint(s):
"""Convert four-byte big endian representation to a long.
@@ -160,7 +164,7 @@
def close(self):
"""Close the connection."""
- logging.debug(self.get_ip()+': connection closed')
+ logger.debug(self.get_ip()+': connection closed')
self.connection.close()
def is_locally_initiated(self):
@@ -204,7 +208,7 @@
"""Send the L{UNCHOKE} message."""
if self.send_choke_queued:
self.send_choke_queued = False
- logging.info(self.get_ip()+': CHOKE SUPPRESSED')
+ logger.info(self.get_ip()+': CHOKE SUPPRESSED')
else:
self._send_message(UNCHOKE)
if ( self.partial_message or self.just_unchoked is None
@@ -227,7 +231,7 @@
self._send_message(REQUEST + tobinary(index) +
tobinary(begin) + tobinary(length))
- logging.debug(self.get_ip()+': sent request '+str(index)+', '+str(begin)+', '+str(begin+length))
+ logger.debug(self.get_ip()+': sent request '+str(index)+', '+str(begin)+', '+str(begin+length))
def send_cancel(self, index, begin, length):
"""Send the L{CANCEL} message.
@@ -245,7 +249,7 @@
self._send_message(CANCEL + tobinary(index) +
tobinary(begin) + tobinary(length))
- logging.debug(self.get_ip()+': sent cancel '+str(index)+', '+str(begin)+', '+str(begin+length))
+ logger.debug(self.get_ip()+': sent cancel '+str(index)+', '+str(begin)+', '+str(begin+length))
def send_bitfield(self, bitfield):
"""Send the L{BITFIELD} message.
@@ -280,9 +284,9 @@
"""
if s:
- logging.debug(self.get_ip()+': SENDING MESSAGE '+str(ord(s[0]))+' ('+str(len(s))+')')
+ logger.debug(self.get_ip()+': SENDING MESSAGE '+str(ord(s[0]))+' ('+str(len(s))+')')
else:
- logging.debug(self.get_ip()+': SENDING MESSAGE keepalive (0)')
+ logger.debug(self.get_ip()+': SENDING MESSAGE keepalive (0)')
s = tobinary(len(s))+s
if self.partial_message:
self.outqueue.append(s)
@@ -309,7 +313,7 @@
self.partial_message = ''.join((
tobinary(len(piece) + 9), PIECE,
tobinary(index), tobinary(begin), piece.tostring() ))
- logging.debug(self.get_ip()+': sending chunk '+str(index)+', '+str(begin)+', '+str(begin+len(piece)))
+ logger.debug(self.get_ip()+': sending chunk '+str(index)+', '+str(begin)+', '+str(begin+len(piece)))
if bytes < len(self.partial_message):
self.connection.send_message_raw(self.partial_message[:bytes])
@@ -479,7 +483,7 @@
self.ccount += 1
c = Connection(connection, self, self.ccount)
- logging.debug(c.get_ip()+': connection made')
+ logger.debug(c.get_ip()+': connection made')
self.connections[connection] = c
c.upload = self.make_upload(c, self.ratelimiter, self.totalup)
c.download = self.downloader.make_download(c)
@@ -495,7 +499,7 @@
"""
c = self.connections[connection]
- logging.debug(c.get_ip()+': connection closed')
+ logger.debug(c.get_ip()+': connection closed')
del self.connections[connection]
if c.download:
c.download.disconnected()
@@ -537,15 +541,15 @@
c = self.connections[connection]
t = message[0]
- logging.debug(c.get_ip()+': message received '+str(ord(t)))
+ logger.debug(c.get_ip()+': message received '+str(ord(t)))
if t == BITFIELD and c.got_anything:
- logging.info(c.get_ip()+': misplaced bitfield, closing connection')
+ logger.info(c.get_ip()+': misplaced bitfield, closing connection')
connection.close()
return
c.got_anything = True
if (t in [CHOKE, UNCHOKE, INTERESTED, NOT_INTERESTED] and
len(message) != 1):
- logging.debug(c.get_ip()+': bad message length, closing connection')
+ logger.debug(c.get_ip()+': bad message length, closing connection')
connection.close()
return
if t == CHOKE:
@@ -559,12 +563,12 @@
c.upload.got_not_interested()
elif t == HAVE:
if len(message) != 5:
- logging.debug(c.get_ip()+': bad message length, closing connection')
+ logger.debug(c.get_ip()+': bad message length, closing connection')
connection.close()
return
i = toint(message[1:])
if i >= self.numpieces:
- logging.debug(c.get_ip()+': bad piece number, closing connection')
+ logger.debug(c.get_ip()+': bad piece number, closing connection')
connection.close()
return
if c.download.got_have(i):
@@ -573,47 +577,47 @@
try:
b = Bitfield(self.numpieces, message[1:])
except ValueError:
- logging.debug(c.get_ip()+': bad bitfield, closing connection')
+ logger.debug(c.get_ip()+': bad bitfield, closing connection')
connection.close()
return
if c.download.got_have_bitfield(b):
c.upload.got_not_interested()
elif t == REQUEST:
if len(message) != 13:
- logging.debug(c.get_ip()+': bad message length, closing connection')
+ logger.debug(c.get_ip()+': bad message length, closing connection')
connection.close()
return
i = toint(message[1:5])
if i >= self.numpieces:
- logging.debug(c.get_ip()+': bad piece number, closing connection')
+ logger.debug(c.get_ip()+': bad piece number, closing connection')
connection.close()
return
c.got_request(i, toint(message[5:9]),
toint(message[9:]))
elif t == CANCEL:
if len(message) != 13:
- logging.debug(c.get_ip()+': bad message length, closing connection')
+ logger.debug(c.get_ip()+': bad message length, closing connection')
connection.close()
return
i = toint(message[1:5])
if i >= self.numpieces:
- logging.debug(c.get_ip()+': bad piece number, closing connection')
+ logger.debug(c.get_ip()+': bad piece number, closing connection')
connection.close()
return
c.upload.got_cancel(i, toint(message[5:9]),
toint(message[9:]))
elif t == PIECE:
if len(message) <= 9:
- logging.debug(c.get_ip()+': bad message length, closing connection')
+ logger.debug(c.get_ip()+': bad message length, closing connection')
connection.close()
return
i = toint(message[1:5])
if i >= self.numpieces:
- logging.debug(c.get_ip()+': bad piece number, closing connection')
+ logger.debug(c.get_ip()+': bad piece number, closing connection')
connection.close()
return
if c.download.got_piece(i, toint(message[5:9]), message[9:]):
self.got_piece(i)
else:
- logging.debug(c.get_ip()+': unknown message type, closing connection')
+ logger.debug(c.get_ip()+': unknown message type, closing connection')
connection.close()
Modified: debtorrent/trunk/DebTorrent/BT1/Encrypter.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Encrypter.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Encrypter.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Encrypter.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Make encrypted connections to peers.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type MAX_INCOMPLETE: C{int}
@var MAX_INCOMPLETE: the maximum number of incomplete connections to have
outstanding before new connections to initiate get queued
@@ -37,7 +39,7 @@
False = 0
bool = lambda x: not not x
-DEBUG = True
+logger = logging.getLogger('DebTorrent.BT1.Encrypter')
MAX_INCOMPLETE = 8
@@ -1179,7 +1181,7 @@
if self.config['security'] and ip != 'unknown' and ip == dns[0]:
return True
try:
- logging.debug('initiating connection to: '+str(dns)+', '+str(id)+', '+str(encrypted))
+ logger.debug('initiating connection to: '+str(dns)+', '+str(id)+', '+str(encrypted))
c = self.raw_server.start_connection(dns)
con = Connection(self, c, id, encrypted = encrypted)
self.connections[c] = con
Modified: debtorrent/trunk/DebTorrent/BT1/FileSelector.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/FileSelector.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/FileSelector.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/FileSelector.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,12 @@
#
# $Id$
-"""Enable the selective downloading of files within a torrent."""
+"""Enable the selective downloading of files within a torrent.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from random import shuffle
import logging
@@ -14,6 +19,7 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.BT1.FileSelector')
class FileSelector:
"""Enable the selective downloading of files within a torrent.
@@ -142,7 +148,7 @@
assert v >= -1
assert v <= 2
except:
- logging.warning('Initializing the priority failed', exc_info = True)
+ logger.warning('Initializing the priority failed', exc_info = True)
return False
try:
for f in xrange(self.numfiles):
Modified: debtorrent/trunk/DebTorrent/BT1/HTTPDownloader.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/HTTPDownloader.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/HTTPDownloader.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/HTTPDownloader.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Manage downloading pieces over HTTP.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type VERSION: C{string}
@var VERSION: the UserAgent identifier sent to all sites
@type haveall: L{haveComplete}
@@ -26,6 +28,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.BT1.HTTPDownloader')
VERSION = product_name+'/'+version_short
@@ -207,7 +211,7 @@
self.endflag = True
self.resched()
else:
- logging.debug('HTTPDownloader: downloading piece '+str(self.index))
+ logger.debug('HTTPDownloader: downloading piece '+str(self.index))
(start, end, length, file) = self.downloader.storage.storage.get_file_range(self.index)
filename = self.downloader.filenamefunc()
if len(filename) > 0 and file.startswith(filename):
@@ -237,7 +241,7 @@
self.error = None
self.received_data = None
try:
- logging.debug('HTTPDownloader: sending request: GET '+self.url+' '+str(self.headers))
+ logger.debug('HTTPDownloader: sending request: GET '+self.url+' '+str(self.headers))
self.connection.request('GET',self.url, None, self.headers)
# Check for closed persistent connection due to server timeout
@@ -250,11 +254,11 @@
self.connection.request('GET',self.url, None, self.headers)
r = self.connection.getresponse()
- logging.debug('HTTPDownloader: got response: '+str(r.status)+', '+r.reason+', '+str(r.getheaders()))
+ logger.debug('HTTPDownloader: got response: '+str(r.status)+', '+r.reason+', '+str(r.getheaders()))
self.connection_status = r.status
self.received_data = r.read()
except Exception, e:
- logging.exception('error accessing http seed: '+str(e))
+ logger.exception('error accessing http seed: '+str(e))
self.error = 'error accessing http seed: '+str(e)
try:
self.connection.close()
@@ -478,7 +482,7 @@
"""
- logging.info('Starting a deb_mirror downloader for: '+url)
+ logger.info('Starting a deb_mirror downloader for: '+url)
self.downloads.append(SingleDownload(self, url))
return self.downloads[-1]
@@ -502,7 +506,7 @@
"""
- logging.info('Cancelling all HTTP downloads for pieces: '+str(pieces))
+ logger.info('Cancelling all HTTP downloads for pieces: '+str(pieces))
for d in self.downloads:
if d.active and d.index in pieces:
d.cancelled = True
Modified: debtorrent/trunk/DebTorrent/BT1/Rerequester.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Rerequester.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Rerequester.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Rerequester.py Sat Aug 4 20:48:51 2007
@@ -7,6 +7,8 @@
"""Communicate with a tracker.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type mapbase64: C{string}
@var mapbase64: the 64 characters to use for a base64 representation
@type keys: C{dictionary}
@@ -40,6 +42,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.BT1.Rerequester')
mapbase64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-'
keys = {}
@@ -670,7 +674,7 @@
x = p[i]
peers.append(((x['ip'].strip(), x['port']),
x.get('peer id',0), cflags[i]))
- logging.debug('received from tracker: '+str(peers))
+ logger.debug('received from tracker: '+str(peers))
ps = len(peers) + self.howmany()
if ps < self.maxpeers:
if self.doneflag.isSet():
@@ -700,7 +704,7 @@
if self.excfunc:
self.excfunc(s)
else:
- logging.error(s)
+ logger.error(s)
callback()
self.externalsched(r)
Modified: debtorrent/trunk/DebTorrent/BT1/Storage.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Storage.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Storage.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Storage.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Low-level writing of files.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type MAXREADSIZE: C{long}
@var MAXREADSIZE: the maximum number of bytes that can be read at a time
@type MAXLOCKSIZE: C{long}
@@ -37,6 +39,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.BT1.Storage')
MAXREADSIZE = 32768
MAXLOCKSIZE = 1000000000L
@@ -406,7 +410,7 @@
assert newmtime <= oldmtime+1
assert newmtime >= oldmtime-1
except:
- logging.warning(file+' modified: '
+ logger.warning(file+' modified: '
+strftime('(%x %X)',localtime(self.mtimes[file]))
+strftime(' != (%x %X) ?',localtime(getmtime(file))))
raise IOError('modified during download')
@@ -414,7 +418,7 @@
self.make_directories(file)
return open(file, mode)
except:
- logging.exception('Error opening the file: '+file)
+ logger.exception('Error opening the file: '+file)
raise
@@ -478,7 +482,7 @@
self.whandles[file] = 1
self.lock_file(file, f)
except (IOError, OSError), e:
- logging.exception('unable to reopen: '+file)
+ logger.exception('unable to reopen: '+file)
raise IOError('unable to reopen '+file+': '+str(e))
if self.handlebuffer:
@@ -500,7 +504,7 @@
if self.lock_while_reading:
self.lock_file(file, f)
except (IOError, OSError), e:
- logging.exception('unable to open: '+file)
+ logger.exception('unable to open: '+file)
raise IOError('unable to open '+file+': '+str(e))
if self.handlebuffer is not None:
@@ -517,8 +521,8 @@
for l in self.working_ranges:
self.ranges.extend(l)
self.begins = [i[0] for i in self.ranges]
- logging.debug('file ranges: '+str(self.ranges))
- logging.debug('file begins: '+str(self.begins))
+ logger.debug('file ranges: '+str(self.ranges))
+ logger.debug('file begins: '+str(self.begins))
def get_file_range(self, index):
"""Get the file name and range that corresponds to this piece.
@@ -583,7 +587,7 @@
r = PieceBuffer()
for file, pos, end in self._intervals(pos, amount):
- logging.debug('reading '+file+' from '+str(pos)+' to '+str(end))
+ logger.debug('reading '+file+' from '+str(pos)+' to '+str(end))
self.lock.acquire()
h = self._get_file_handle(file, False)
if flush_first and self.whandles.has_key(file):
@@ -613,7 +617,7 @@
# might raise an IOError
total = 0
for file, begin, end in self._intervals(pos, len(s)):
- logging.debug('writing '+file+' from '+str(pos)+' to '+str(end))
+ logger.debug('writing '+file+' from '+str(pos)+' to '+str(end))
self.lock.acquire()
h = self._get_file_handle(file, True)
h.seek(begin)
@@ -698,9 +702,9 @@
return r
start, end, offset, file = self.file_ranges[f]
start_piece, end_piece = self.file_pieces[f]
- logging.debug('calculating disabled range for '+self.files[f][0])
- logging.debug('bytes: '+str(start)+'-'+str(end))
- logging.debug('file spans pieces '+str(start_piece)+'-'+str(end_piece))
+ logger.debug('calculating disabled range for '+self.files[f][0])
+ logger.debug('bytes: '+str(start)+'-'+str(end))
+ logger.debug('file spans pieces '+str(start_piece)+'-'+str(end_piece))
pieces = range(start_piece, end_piece+1)
offset = 0
disabled_files = []
@@ -708,8 +712,8 @@
working_range = [(start, end, offset, file)]
update_pieces = []
- logging.debug('working range: '+str(working_range))
- logging.debug('update pieces: '+str(update_pieces))
+ logger.debug('working range: '+str(working_range))
+ logger.debug('update pieces: '+str(update_pieces))
r = (tuple(working_range), tuple(update_pieces), tuple(disabled_files))
self.disabled_ranges[f] = r
return r
@@ -735,7 +739,7 @@
if not self.disabled[f]:
return
- logging.info('enabling file '+self.files[f][0])
+ logger.info('enabling file '+self.files[f][0])
self.disabled[f] = False
r = self.file_ranges[f]
if not r:
@@ -761,7 +765,7 @@
"""
if self.disabled[f]:
return
- logging.info('disabling file '+self.files[f][0])
+ logger.info('disabling file '+self.files[f][0])
self.disabled[f] = True
r = self._get_disabled_ranges(f)
if not r:
@@ -883,11 +887,11 @@
continue
start, end, offset, file =r
start_piece, end_piece = self.file_pieces[i]
- logging.debug('adding '+file)
+ logger.debug('adding '+file)
for p in xrange(start_piece, end_piece+1):
valid_pieces[p] = 1
- logging.info('Saved list of valid pieces: '+str(valid_pieces.keys()))
+ logger.info('Saved list of valid pieces: '+str(valid_pieces.keys()))
def test(old, size, mtime):
"""Test that the file has not changed since the status save.
@@ -923,14 +927,14 @@
or not test(files[i],getsize(file),getmtime(file)) ):
start, end, offset, file = self.file_ranges[i]
start_piece, end_piece = self.file_pieces[i]
- logging.debug('removing '+file)
+ logger.debug('removing '+file)
for p in xrange(start_piece, end_piece+1):
if valid_pieces.has_key(p):
del valid_pieces[p]
except:
- logging.exception('Error unpickling data cache')
+ logger.exception('Error unpickling data cache')
return []
- logging.info('Final list of valid pieces: '+str(valid_pieces.keys()))
+ logger.info('Final list of valid pieces: '+str(valid_pieces.keys()))
return valid_pieces.keys()
Modified: debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Manage the storage of data at the piece level.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type STATS_INTERVAL: C{float}
@var STATS_INTERVAL: how often to print a status update during an old-style init
@@ -27,6 +29,8 @@
def insort(l, item):
l.append(item)
l.sort()
+
+logger = logging.getLogger('DebTorrent.BT1.StorageWrapper')
STATS_INTERVAL = 0.2
@@ -475,7 +479,7 @@
x = next()
self.statusfunc(fractionDone = 0)
- logging.info('StorageWrapper old_style_init complete')
+ logger.info('StorageWrapper old_style_init complete')
return True
@@ -513,7 +517,7 @@
else:
if not self.initialize_tasks:
self.initialize_done()
- logging.info('StorageWrapper initialize complete')
+ logger.info('StorageWrapper initialize complete')
return
msg, done, init, next = self.initialize_tasks.pop(0)
if init():
@@ -584,7 +588,7 @@
"""
- logging.debug(str(piece)+' at '+str(pos))
+ logger.debug(str(piece)+' at '+str(pos))
self.places[piece] = pos
self.have[piece] = True
len = self._piecelen(piece)
@@ -1160,7 +1164,7 @@
"""
oldpos = self.places[index]
- logging.debug('moving '+str(index)+' from '+str(oldpos)+' to '+str(newpos))
+ logger.debug('moving '+str(index)+' from '+str(oldpos)+' to '+str(newpos))
assert oldpos != index
assert oldpos != newpos
assert index == newpos or not self.places.has_key(newpos)
@@ -1280,7 +1284,7 @@
if not self.places.has_key(index):
while self._clear_space(index):
pass
- logging.debug('new place for '+str(index)+' at '+str(self.places[index]))
+ logger.debug('new place for '+str(index)+' at '+str(self.places[index]))
if self.flag.isSet():
return
@@ -1749,7 +1753,7 @@
assert amount_obtained + amount_inactive == self.amount_desired
except:
- logging.exception('Error unpickling data cache')
+ logger.exception('Error unpickling data cache')
return [] # invalid data, discard everything
self.have = have
Modified: debtorrent/trunk/DebTorrent/BT1/StreamCheck.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/StreamCheck.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/StreamCheck.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/StreamCheck.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,12 @@
# $Id$
-"""Not used."""
+"""Not used.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from cStringIO import StringIO
from binascii import b2a_hex
@@ -18,6 +23,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.BT1.StreamCheck')
option_pattern = chr(0)*8
@@ -64,29 +71,29 @@
def read_header_len(self, s):
if ord(s) != len(protocol_name):
- logging.warn(str(self.no)+' BAD HEADER LENGTH')
+ logger.warn(str(self.no)+' BAD HEADER LENGTH')
return len(protocol_name), self.read_header
def read_header(self, s):
if s != protocol_name:
- logging.warn(str(self.no)+' BAD HEADER')
+ logger.warn(str(self.no)+' BAD HEADER')
return 8, self.read_reserved
def read_reserved(self, s):
return 20, self.read_download_id
def read_download_id(self, s):
- logging.debug(str(self.no)+' download ID ' + tohex(s))
+ logger.debug(str(self.no)+' download ID ' + tohex(s))
return 20, self.read_peer_id
def read_peer_id(self, s):
- logging.debug(str(self.no)+' peer ID' + make_readable(s))
+ logger.debug(str(self.no)+' peer ID' + make_readable(s))
return 4, self.read_len
def read_len(self, s):
l = toint(s)
if l > 2 ** 23:
- logging.warn(str(self.no)+' BAD LENGTH: '+str(l)+' ('+s+')')
+ logger.warn(str(self.no)+' BAD LENGTH: '+str(l)+' ('+s+')')
return l, self.read_message
def read_message(self, s):
@@ -94,30 +101,30 @@
return 4, self.read_len
m = s[0]
if ord(m) > 8:
- logging.warn(str(self.no)+' BAD MESSAGE: '+str(ord(m)))
+ logger.warn(str(self.no)+' BAD MESSAGE: '+str(ord(m)))
if m == Connecter.REQUEST:
if len(s) != 13:
- logging.warn(str(self.no)+' BAD REQUEST SIZE: '+str(len(s)))
+ logger.warn(str(self.no)+' BAD REQUEST SIZE: '+str(len(s)))
return 4, self.read_len
index = toint(s[1:5])
begin = toint(s[5:9])
length = toint(s[9:])
- logging.info(str(self.no)+' Request: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
+ logger.info(str(self.no)+' Request: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
elif m == Connecter.CANCEL:
if len(s) != 13:
- logging.warn(str(self.no)+' BAD CANCEL SIZE: '+str(len(s)))
+ logger.warn(str(self.no)+' BAD CANCEL SIZE: '+str(len(s)))
return 4, self.read_len
index = toint(s[1:5])
begin = toint(s[5:9])
length = toint(s[9:])
- logging.info(str(self.no)+' Cancel: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
+ logger.info(str(self.no)+' Cancel: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
elif m == Connecter.PIECE:
index = toint(s[1:5])
begin = toint(s[5:9])
length = len(s)-9
- logging.info(str(self.no)+' Piece: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
+ logger.info(str(self.no)+' Piece: '+str(index)+': '+str(begin)+'-'+str(begin)+'+'+str(length))
else:
- logging.info(str(self.no)+' Message '+str(ord(m))+' (length '+str(len(s))+')')
+ logger.info(str(self.no)+' Message '+str(ord(m))+' (length '+str(len(s))+')')
return 4, self.read_len
def write(self, s):
Modified: debtorrent/trunk/DebTorrent/BT1/T2T.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/T2T.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/T2T.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/T2T.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Tracker to tracker connection management.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type R_0: C{function}
@var R_0: a function that always returns 0
@type R_1: C{function}
@@ -26,6 +28,7 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.BT1.T2T')
def excfunc(x):
"""Log an exception that occurred.
@@ -35,7 +38,7 @@
"""
- logging.error(x)
+ logger.error(x)
R_0 = lambda: 0
R_1 = lambda: 1
@@ -160,7 +163,7 @@
return
self.lastsuccessful = True
self.newpeerdata = []
- logging.info('contacting '+self.tracker+' for info_hash='+quote(self.hash))
+ logger.info('contacting '+self.tracker+' for info_hash='+quote(self.hash))
self.rerequester.snoop(self.peers, self.callback)
def callback(self):
@@ -173,7 +176,7 @@
# I think I'm stripping from a regular tracker; boost the number of peers requested
self.peers = int(self.peers * (self.rerequester.announce_interval / self.interval))
self.operatinginterval = self.rerequester.announce_interval
- logging.info(self.tracker+' with info_hash='+quote(self.hash)+' returned '+str(len(self.newpeerdata))+' peers')
+ logger.info(self.tracker+' with info_hash='+quote(self.hash)+' returned '+str(len(self.newpeerdata))+' peers')
self.peerlists.append(self.newpeerdata)
self.peerlists = self.peerlists[-10:] # keep up to the last 10 announces
if self.isactive():
@@ -199,22 +202,22 @@
"""
self.lastsuccessful = False
- logging.info(self.tracker+' with info_hash='+quote(self.hash)+' gives error: "'+r+'"')
+ logger.info(self.tracker+' with info_hash='+quote(self.hash)+' gives error: "'+r+'"')
if r == self.rerequester.rejectedmessage + 'disallowed': # whoops!
- logging.info(' -- disallowed - deactivating')
+ logger.info(' -- disallowed - deactivating')
self.deactivate()
self.disallow(self.tracker) # signal other torrents on this tracker
return
if lower(r[:8]) == 'rejected': # tracker rejected this particular torrent
self.rejected += 1
if self.rejected == 3: # rejected 3 times
- logging.info(' -- rejected 3 times - deactivating')
+ logger.info(' -- rejected 3 times - deactivating')
self.deactivate()
return
self.errors += 1
if self.errors >= 3: # three or more errors in a row
self.operatinginterval += self.interval # lengthen the interval
- logging.info(' -- lengthening interval to '+str(self.operatinginterval)+' seconds')
+ logger.info(' -- lengthening interval to '+str(self.operatinginterval)+' seconds')
def harvest(self):
"""Retrieve the saved list of peers from this tracker connection.
Modified: debtorrent/trunk/DebTorrent/BT1/makemetafile.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/makemetafile.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/makemetafile.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/makemetafile.py Sat Aug 4 20:48:51 2007
@@ -7,6 +7,8 @@
"""Create a torrent file or data structure.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type defaults: C{list} of (C{string}, unknown, C{string})
@var defaults: the default configuration variables, including descriptions
@type default_piece_len_exp: C{int}
@@ -37,6 +39,8 @@
except:
from sys import getdefaultencoding
ENCODING = getdefaultencoding()
+
+logger = logging.getLogger('DebTorrent.BT1.makemetafile')
defaults = [
('announce_list', '',
@@ -454,7 +458,7 @@
sub_pieces = getsubpieces(file, pieces_file)
- logging.warning('WARNING: Pieces file could not be found, not using sub-package pieces.')
+ logger.warning('WARNING: Pieces file could not be found, not using sub-package pieces.')
file = abspath(file)
f = open(file)
Modified: debtorrent/trunk/DebTorrent/BT1/track.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/track.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/track.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/track.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Tools to track a download swarm.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type defaults: C{list} of (C{string}, unknown, C{string})
@var defaults: the parameter names, default values, and descriptions
@type alas: C{string}
@@ -55,6 +57,8 @@
True = 1
False = 0
bool = lambda x: not not x
+
+logger = logging.getLogger('DebTorrent.BT1.track')
defaults = [
('port', 80, "Port to listen on."),
@@ -409,7 +413,7 @@
self.favicon = h.read()
h.close()
except:
- logging.warning("specified favicon file does not exist.")
+ logger.warning("specified favicon file does not exist.")
self.rawserver = rawserver
self.cached = {} # format: infohash: [[time1, l1, s1], [time2, l2, s2], ...]
self.cached_t = {} # format: infohash: [time, cache]
@@ -429,7 +433,7 @@
self.only_local_override_ip = not config['nat_check']
if CHECK_PEER_ID_ENCRYPTED and not CRYPTO_OK:
- logging.warning('crypto library not installed,' +
+ logger.warning('crypto library not installed,' +
' cannot completely verify encrypted peers')
tempstate = configdir.getState()
@@ -439,9 +443,9 @@
tempstate = {'peers': tempstate}
statefiletemplate(tempstate)
self.state = tempstate
- logging.info('successfully loaded the previous state file')
+ logger.info('successfully loaded the previous state file')
except:
- logging.warning('statefile corrupt; resetting')
+ logger.warning('statefile corrupt; resetting')
self.downloads = self.state.setdefault('peers', {})
self.completed = self.state.setdefault('completed', {})
@@ -495,7 +499,7 @@
if config['allowed_list']:
if config['allowed_dir']:
- logging.warning('allowed_dir and allowed_list options cannot be used together,'+
+ logger.warning('allowed_dir and allowed_list options cannot be used together,'+
' disregarding allowed_dir')
config['allowed_dir'] = ''
self.allowed = self.state.setdefault('allowed_list',{})
@@ -688,7 +692,7 @@
'</html>\n')
return (200, 'OK', {'Content-Type': 'text/html; charset=iso-8859-1'}, s.getvalue())
except:
- logging.exception('Error generating info page')
+ logger.exception('Error generating info page')
return (500, 'Internal Server Error', {'Content-Type': 'text/html; charset=iso-8859-1'}, 'Server Error')
@@ -1323,14 +1327,14 @@
if ( record is None
or (record['ip'] != ip and record.get('given ip') != ip)
or record['port'] != port ):
- logging.info('natcheck on '+ip+' ('+quote(peerid)+'), '+str(port)+': '+str(404))
+ logger.info('natcheck on '+ip+' ('+quote(peerid)+'), '+str(port)+': '+str(404))
return
if self.config['log_nat_checks']:
if result:
x = 200
else:
x = 503
- logging.info('natcheck on '+ip+' ('+quote(peerid)+'), '+str(port)+': '+str(x))
+ logger.info('natcheck on '+ip+' ('+quote(peerid)+'), '+str(port)+': '+str(x))
if not record.has_key('nat'):
record['nat'] = int(not result)
if result:
@@ -1381,7 +1385,7 @@
(self.allowed, added, garbage2) = r
self.state['allowed_list'] = self.allowed
except (IOError, OSError):
- logging.warning('unable to read allowed torrent list')
+ logger.warning('unable to read allowed torrent list')
return
self.allowed_list_mtime = os.path.getmtime(f)
@@ -1402,7 +1406,7 @@
self.allowed_IPs.read_fieldlist(f)
self.allowed_ip_mtime = os.path.getmtime(f)
except (IOError, OSError):
- logging.warning('unable to read allowed_IP list')
+ logger.warning('unable to read allowed_IP list')
f = self.config['banned_ips']
if f and self.banned_ip_mtime != os.path.getmtime(f):
@@ -1411,7 +1415,7 @@
self.banned_IPs.read_rangelist(f)
self.banned_ip_mtime = os.path.getmtime(f)
except (IOError, OSError):
- logging.warning('unable to read banned_IP list')
+ logger.warning('unable to read banned_IP list')
def delete_peer(self, infohash, peerid):
@@ -1483,20 +1487,20 @@
# Create the root handler (removing any others)
hdlr = logging.FileHandler(outfilename, 'a')
- hdlr.setFormatter(logging.Formatter('%(asctime)s %(threadName)s %(levelname)s %(module)s %(name)s %(message)s'))
+ hdlr.setFormatter(logging.Formatter('%(asctime)s %(threadName)s %(name)s %(levelname)s %(message)s'))
for h in logging.root.handlers:
logging.root.removeHandler(h)
logging.root.addHandler(hdlr)
logging.root.setLevel(config['log_level'])
- logging.info('Logging begins')
+ logger.info('Logging begins')
# Continue
if config['save_options']:
configdir.saveConfig(config)
except ValueError, e:
- logging.error('error: ' + str(e))
- logging.error("Usage: debtorrent-tracker.py <global options>")
- logging.error(formatDefinitions(defaults, 80))
+ logger.error('error: ' + str(e))
+ logger.error("Usage: debtorrent-tracker.py <global options>")
+ logger.error(formatDefinitions(defaults, 80))
logging.shutdown()
sys.exit(1)
@@ -1512,7 +1516,7 @@
logfile, config['hupmonitor']))
t.save_state()
- logging.info('Shutting down')
+ logger.info('Shutting down')
logging.shutdown()
def size_format(s):
Modified: debtorrent/trunk/DebTorrent/HTTPCache.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/HTTPCache.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/HTTPCache.py (original)
+++ debtorrent/trunk/DebTorrent/HTTPCache.py Sat Aug 4 20:48:51 2007
@@ -5,6 +5,10 @@
"""Manage an HTTP download cache.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+ at type time_format: C{string}
+ at var time_format: the format to use for reading/writing HTTP server times
@type VERSION: C{string}
@var VERSION: the UserAgent identifier sent to all sites
@type alas: C{string}
@@ -25,6 +29,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.HTTPCache')
time_format = '%a, %d %b %Y %H:%M:%S'
VERSION = product_name+'/'+version_short
@@ -79,12 +85,12 @@
try:
self.connection = HTTPConnection(self.server)
except:
- logging.error('cannot connect to http seed: '+self.server)
+ logger.error('cannot connect to http seed: '+self.server)
return
self.headers = {'User-Agent': VERSION}
self.active = False
- logging.info('CacheRequest: downloading '+self.url)
+ logger.info('CacheRequest: downloading '+self.url)
rq = Thread(target = self._request, name = 'HTTPCache.CacheRequest._request')
rq.setDaemon(False)
rq.start()
@@ -97,18 +103,18 @@
import encodings.idna
try:
- logging.debug('CacheRequest: sending request GET '+self.url+', '+str(self.headers))
+ logger.debug('CacheRequest: sending request GET '+self.url+', '+str(self.headers))
self.connection.request('GET',self.url, None, self.headers)
r = self.connection.getresponse()
- logging.debug('CacheRequest: got response '+str(r.status)+', '+r.reason+', '+str(r.getheaders()))
+ logger.debug('CacheRequest: got response '+str(r.status)+', '+r.reason+', '+str(r.getheaders()))
self.connection_status = r.status
self.connection_response = r.reason
self.headers = dict(r.getheaders())
self.received_data = r.read()
except Exception, e:
- logging.exception('error accessing http server')
+ logger.exception('error accessing http server')
self.connection_status = 500
self.connection_response = 'Internal Server Error'
self.headers = {}
@@ -160,7 +166,7 @@
"""
- logging.info('Starting a HttpCache downloader for: http://'+'/'.join(path))
+ logger.info('Starting a HttpCache downloader for: http://'+'/'.join(path))
self.downloads.append(CacheRequest(self, path, func))
def download_complete(self, d, path, func, r):
@@ -181,7 +187,7 @@
"""
- logging.info('HttpCache download completed for: http://'+'/'.join(path))
+ logger.info('HttpCache download completed for: http://'+'/'.join(path))
self.downloads.remove(d)
if r[0] in (200, 206):
Modified: debtorrent/trunk/DebTorrent/HTTPHandler.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/HTTPHandler.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/HTTPHandler.py (original)
+++ debtorrent/trunk/DebTorrent/HTTPHandler.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Handles incoming HTTP connections from other clients to this server.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type weekdays: C{list} of C{string}
@var weekdays: the days of the week
@type months: C{list} of C{string}
@@ -24,6 +26,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.HTTPHandler')
weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
@@ -187,7 +191,7 @@
except ValueError:
return None
self.headers[data[:i].strip().lower()] = data[i+1:].strip()
- logging.debug(data[:i].strip() + ": " + data[i+1:].strip())
+ logger.debug(data[:i].strip() + ": " + data[i+1:].strip())
return self.read_header
def answer(self, (responsecode, responsestring, headers, data)):
@@ -215,7 +219,7 @@
if len(cdata) >= len(data):
self.encoding = 'identity'
else:
- logging.debug('Compressed: '+str(len(cdata))+' Uncompressed: '+str(len(data)))
+ logger.debug('Compressed: '+str(len(cdata))+' Uncompressed: '+str(len(data)))
data = cdata
headers['Content-Encoding'] = 'gzip'
@@ -290,7 +294,7 @@
self.log = open(self.logfile,'a')
print >> self.log, "# Log Started: ", isotime()
except:
- logging.exception('could not open log file')
+ logger.exception('could not open log file')
else:
if hupmonitor:
def huphandler(signum, frame, self = self):
@@ -299,7 +303,7 @@
self.log = open(self.logfile,'a')
print >> self.log, "# Log reopened: ", isotime()
except:
- logging.exception('could not reopen log file')
+ logger.exception('could not reopen log file')
signal.signal(signal.SIGHUP, huphandler)
Modified: debtorrent/trunk/DebTorrent/RateLimiter.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/RateLimiter.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/RateLimiter.py (original)
+++ debtorrent/trunk/DebTorrent/RateLimiter.py Sat Aug 4 20:48:51 2007
@@ -8,6 +8,8 @@
All the constants below are only for the automatic upload rate adjustment.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type MAX_RATE_PERIOD: C{float}
@var MAX_RATE_PERIOD: maximum amount of time to guess the current rate
estimate represents
@@ -59,6 +61,8 @@
sum([1])
except:
sum = lambda a: reduce(lambda x,y: x+y, a, 0)
+
+logger = logging.getLogger('DebTorrent.RateLimiter')
MAX_RATE_PERIOD = 20.0
MAX_RATE = 10e10
@@ -239,13 +243,13 @@
"""
- logging.debug('ping delay: '+str(delay))
+ logger.debug('ping delay: '+str(delay))
if not self.autoadjust:
return
self.pings.append(delay > PING_BOUNDARY)
if len(self.pings) < PING_SAMPLES+PING_DISCARDS:
return
- logging.debug('cycle')
+ logger.debug('cycle')
pings = sum(self.pings[PING_DISCARDS:])
del self.pings[:]
if pings >= PING_THRESHHOLD: # assume flooded
@@ -257,7 +261,7 @@
self.upload_rate = max(int(self.upload_rate*ADJUST_DOWN),2)
self.slots = int(sqrt(self.upload_rate*SLOTS_FACTOR))
self.slotsfunc(self.slots)
- logging.debug('adjust down to '+str(self.upload_rate))
+ logger.debug('adjust down to '+str(self.upload_rate))
self.lasttime = clock()
self.bytes_sent = 0
self.autoadjustup = UP_DELAY_FIRST
@@ -270,7 +274,7 @@
self.upload_rate = int(self.upload_rate*ADJUST_UP)
self.slots = int(sqrt(self.upload_rate*SLOTS_FACTOR))
self.slotsfunc(self.slots)
- logging.debug('adjust up to '+str(self.upload_rate))
+ logger.debug('adjust up to '+str(self.upload_rate))
self.lasttime = clock()
self.bytes_sent = 0
self.autoadjustup = UP_DELAY_NEXT
Modified: debtorrent/trunk/DebTorrent/RawServer.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/RawServer.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/RawServer.py (original)
+++ debtorrent/trunk/DebTorrent/RawServer.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Manage connections to and tasks to be run on the server.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type READSIZE: C{int}
@var READSIZE: the maximum amount of data to read from any sockets
@@ -28,6 +30,7 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.RawServer')
def autodetect_ipv6():
"""Detect whether IPv6 connections are supported (not used)."""
@@ -310,7 +313,7 @@
"""
- logging.info("Received signal: "+str(signalnum))
+ logger.info("Received signal: "+str(signalnum))
raise KeyboardInterrupt
def listen_forever(self, handler):
@@ -342,7 +345,7 @@
if id in self.tasks_to_kill:
pass
try:
-# logging.debug(func.func_name)
+# logger.debug(func.func_name)
func()
except (SystemError, MemoryError), e:
self.failfunc(str(e))
@@ -424,7 +427,7 @@
self.excflag.set()
self.exccount += 1
if self.errorfunc is None:
- logging.exception('RawServer exception occurred')
+ logger.exception('RawServer exception occurred')
else:
data = StringIO()
print_exc(file = data)
Modified: debtorrent/trunk/DebTorrent/SocketHandler.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/SocketHandler.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/SocketHandler.py (original)
+++ debtorrent/trunk/DebTorrent/SocketHandler.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Handle all sockets.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type all: C{int}
@var all: all events to check for, both input and output
@@ -30,6 +32,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.SocketHandler')
all = POLLIN | POLLOUT
@@ -511,7 +515,7 @@
self.poll.unregister(s)
s.close()
del self.servers[sock]
- logging.error("lost server socket")
+ logger.error("lost server socket")
elif len(self.single_sockets) < self.max_connects:
try:
port = s.getsockname()[1]
Modified: debtorrent/trunk/DebTorrent/bencode.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/bencode.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/bencode.py (original)
+++ debtorrent/trunk/DebTorrent/bencode.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Functions for bencoding and bdecoding data.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type decode_func: C{dictionary} of C{function}
@var decode_func: a dictionary of function calls to be made, based on data,
the keys are the first character of the data and the value is the
@@ -31,6 +33,8 @@
except ImportError:
UnicodeType = None
from cStringIO import StringIO
+
+logger = logging.getLogger('DebTorrent.bencode')
def decode_int(x, f):
"""Bdecode an integer.
@@ -472,7 +476,7 @@
try:
encode_func[type(x)](x, r)
except:
- logging.error('could not encode type '+str(type(x))+' (value: '+str(x)+')')
+ logger.error('could not encode type '+str(type(x))+' (value: '+str(x)+')')
assert 0
return ''.join(r)
Modified: debtorrent/trunk/DebTorrent/inifile.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/inifile.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/inifile.py (original)
+++ debtorrent/trunk/DebTorrent/inifile.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,7 @@
# $Id$
-'''Functions to read/write a Windows-style INI file
+"""Functions to read/write a Windows-style INI file
format::
@@ -28,7 +28,10 @@
Booleans are written as integers. Anything other than strings, integers,
and floats may have unpredictable results.
-'''
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from cStringIO import StringIO
from types import DictType, StringType
@@ -43,6 +46,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.inifile')
def ini_write(f, d, comment=''):
"""Write the ini file.
@@ -65,7 +70,7 @@
assert type(k) == StringType
k = k.lower()
if type(v) == DictType:
- logging.debug('new section:' +k)
+ logger.debug('new section:' +k)
if k:
assert not a.has_key(k)
a[k] = {}
@@ -79,7 +84,7 @@
if type(vv) == StringType:
vv = '"'+vv+'"'
aa[kk] = str(vv)
- logging.debug('a['+k+']['+kk+'] = '+str(vv))
+ logger.debug('a['+k+']['+kk+'] = '+str(vv))
else:
aa = a['']
assert not aa.has_key(k)
@@ -88,7 +93,7 @@
if type(v) == StringType:
v = '"'+v+'"'
aa[k] = str(v)
- logging.debug('a[\'\']['+k+'] = '+str(v))
+ logger.debug('a[\'\']['+k+'] = '+str(v))
r = open(f,'w')
if comment:
for c in comment.split('\n'):
@@ -106,7 +111,7 @@
r.write(kk+' = '+aa[kk]+'\n')
success = True
except:
- logging.exception('Error writing config file: '+f)
+ logger.exception('Error writing config file: '+f)
success = False
try:
r.close()
@@ -127,7 +132,7 @@
"""
- logging.error('('+str(lineno)+') '+err+': '+line)
+ logger.error('('+str(lineno)+') '+err+': '+line)
def ini_read(f, errfunc = errfunc):
"""Read the ini file.
@@ -188,9 +193,9 @@
errfunc(i,l,'duplicate entry')
continue
d[k] = v
- logging.debug(str(dd))
- except:
- logging.exception('Error reading config file: '+f)
+ logger.debug(str(dd))
+ except:
+ logger.exception('Error reading config file: '+f)
dd = None
try:
r.close()
Modified: debtorrent/trunk/DebTorrent/iprangeparse.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/iprangeparse.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/iprangeparse.py (original)
+++ debtorrent/trunk/DebTorrent/iprangeparse.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Deal with all types of IP addresses and IP address ranges.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type ipv4addrmask: C{long}
@var ipv4addrmask: the address mask used to determine if the IP address
in C{long} format is v4 encapsulated in a v6 address
@@ -22,6 +24,7 @@
False = 0
bool = lambda x: not not x
+logger = logging.getLogger('DebTorrent.iprangeparse')
def to_long_ipv4(ip):
"""Convert an IP address from a string to a long.
@@ -341,7 +344,7 @@
ip2 = to_long_ipv4(ip2)
assert ip1 <= ip2
except:
- logging.warning('could not parse IP range: '+line)
+ logger.warning('could not parse IP range: '+line)
l.append((ip1,ip2))
f.close()
self._import_ipv4(l)
Modified: debtorrent/trunk/DebTorrent/launchmanycore.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/launchmanycore.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/launchmanycore.py (original)
+++ debtorrent/trunk/DebTorrent/launchmanycore.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,12 @@
#
# $Id$
-"""Manage the downloading of multiple torrents in one process."""
+"""Manage the downloading of multiple torrents in one process.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from DebTorrent import PSYCO
if PSYCO.psyco:
@@ -36,6 +41,8 @@
except:
True = 1
False = 0
+
+logger = logging.getLogger('DebTorrent.launchmanycore')
def fmttime(n):
"""Formats seconds into a human-readable time.
@@ -377,15 +384,15 @@
# Save the current state of the downloads
self.configdir.saveState(self.pickle())
- logging.info('shutting down')
+ logger.info('shutting down')
self.hashcheck_queue = []
for hash in self.torrent_list:
- logging.info('dropped "'+self.torrent_cache[hash]['path']+'"')
+ logger.info('dropped "'+self.torrent_cache[hash]['path']+'"')
self.downloads[hash].shutdown()
self.rawserver.shutdown()
except:
- logging.exception('SYSTEM ERROR - EXCEPTION GENERATED')
+ logger.exception('SYSTEM ERROR - EXCEPTION GENERATED')
def gather_stats(self):
@@ -534,7 +541,7 @@
"""
if hash not in self.torrent_cache:
- logging.error('Asked to start a torrent that is not in the cache')
+ logger.error('Asked to start a torrent that is not in the cache')
return
c = self.counter
@@ -583,7 +590,7 @@
try:
os.makedirs(saveas)
except:
- logging.exception('error creating the saveas directory: '+saveas)
+ logger.exception('error creating the saveas directory: '+saveas)
raise OSError("couldn't create directory for "+x['path']
+" ("+saveas+")")
else:
@@ -614,7 +621,7 @@
"""
file = '/'.join(path)
- logging.debug('Trying to find file: '+file)
+ logger.debug('Trying to find file: '+file)
found_torrents = []
# Check each torrent in the cache
@@ -629,11 +636,11 @@
# Check that the file ends with the desired file name
if file.endswith('/'.join(f['path'])):
- logging.debug('Found file in: '+str(binascii.b2a_hex(hash)))
+ logger.debug('Found file in: '+str(binascii.b2a_hex(hash)))
found_torrents.append((hash, file_num))
if not found_torrents:
- logging.warning('Failed to find file: '+file)
+ logger.warning('Failed to find file: '+file)
return None, None
# Find a running torrent with the file, (also the newest non-running torrent)
@@ -641,7 +648,7 @@
newest_torrent = ''
for hash, file_num in found_torrents:
if hash in self.torrent_list:
- logging.info('Using torrent: ' + str(binascii.b2a_hex(hash)))
+ logger.info('Using torrent: ' + str(binascii.b2a_hex(hash)))
return self.downloads[hash].d, file_num
else:
if self.torrent_cache[hash]['time'] > newest_mtime:
@@ -650,14 +657,14 @@
# Otherwise start the newest torrent found running
if newest_torrent:
- logging.info('Starting torrent: ' + str(binascii.b2a_hex(hash)))
+ logger.info('Starting torrent: ' + str(binascii.b2a_hex(hash)))
self.start(newest_torrent)
else:
- logging.warning('Could not find the newest torrent, just starting the last one: ' +
+ logger.warning('Could not find the newest torrent, just starting the last one: ' +
str(binascii.b2a_hex(hash)))
self.start(hash)
- logging.info('Using torrent: ' + str(binascii.b2a_hex(hash)))
+ logger.info('Using torrent: ' + str(binascii.b2a_hex(hash)))
return self.downloads[hash].d, file_num
def hashchecksched(self, hash = None):
@@ -696,7 +703,7 @@
"""
if self.torrent_cache.has_key(hash):
- logging.error('DIED: "'+self.torrent_cache[hash]['path']+'"')
+ logger.error('DIED: "'+self.torrent_cache[hash]['path']+'"')
def has_torrent(self, hash):
"""Determine whether there is a downloader for the torrent.
@@ -735,7 +742,7 @@
"""
- logging.error('FAILURE: '+s)
+ logger.error('FAILURE: '+s)
def exchandler(self, s):
"""Indicate to the Output that an exception has occurred.
@@ -745,7 +752,7 @@
"""
- logging.error('SYSTEM ERROR - EXCEPTION GENERATED\n'+s)
+ logger.error('SYSTEM ERROR - EXCEPTION GENERATED\n'+s)
def pickle(self):
"""Save the current state of the downloads to a writable state.
Modified: debtorrent/trunk/DebTorrent/parsedir.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/parsedir.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/parsedir.py (original)
+++ debtorrent/trunk/DebTorrent/parsedir.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,12 @@
#
# $Id$
-"""Parse a directory for torrent files."""
+"""Parse a directory for torrent files.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from bencode import bencode, bdecode
from download_bt1 import get_response
@@ -18,6 +23,8 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.parsedir')
+
def _errfunc(x):
"""The default output printing function to use.
@@ -26,7 +33,7 @@
"""
- logging.error(":: "+x)
+ logger.error(":: "+x)
def parsedir(directory, parsed, files, blocked,
exts = ['dtorrent'],
Modified: debtorrent/trunk/DebTorrent/piecebuffer.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/piecebuffer.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/piecebuffer.py (original)
+++ debtorrent/trunk/DebTorrent/piecebuffer.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Store buffers of piece data.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type _pool: L{BufferPool}
@var _pool: example buffer pool
@type PieceBuffer: L{SingleBuffer}
@@ -23,6 +25,8 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.piecebuffer')
+
class SingleBuffer:
"""A single piece buffer.
@@ -48,7 +52,7 @@
self.pool = pool
self.buf = array('c')
self.count = count
- logging.debug('new/pooled buffer index: '+str(count))
+ logger.debug('new/pooled buffer index: '+str(count))
def init(self):
"""Initialize the new piece buffer."""
Modified: debtorrent/trunk/DebTorrent/subnetparse.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/subnetparse.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/subnetparse.py (original)
+++ debtorrent/trunk/DebTorrent/subnetparse.py Sat Aug 4 20:48:51 2007
@@ -6,6 +6,8 @@
"""Deal with all types of IP addresses and IP address subnets.
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
@type hexbinmap: C{dictionary}
@var hexbinmap: mapping from the hex characters to their binary string representation
@type chrbinmap: C{dictionary}
@@ -25,6 +27,8 @@
True = 1
False = 0
bool = lambda x: not not x
+
+logger = logging.getLogger('DebTorrent.subnetparse')
hexbinmap = {
'0': '0000',
@@ -276,7 +280,7 @@
depth = int(depth)
self._append(ip,depth)
except:
- logging.warning('could not parse IP range: '+line)
+ logger.warning('could not parse IP range: '+line)
f.close()
self.ipv4list.sort()
self.ipv6list.sort()
Modified: debtorrent/trunk/DebTorrent/torrentlistparse.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/torrentlistparse.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/torrentlistparse.py (original)
+++ debtorrent/trunk/DebTorrent/torrentlistparse.py Sat Aug 4 20:48:51 2007
@@ -4,7 +4,12 @@
#
# $Id$
-"""Parse a file for a list of torrent hashes."""
+"""Parse a file for a list of torrent hashes.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
+
+"""
from binascii import unhexlify
import logging
@@ -15,6 +20,7 @@
True = 1
False = 0
+logger = logging.getLogger('DebTorrent.torrentlistparse')
def parsetorrentlist(filename, parsed):
"""Parse a file for a list of torrent hashes.
@@ -44,7 +50,7 @@
raise ValueError, 'bad line'
h = unhexlify(l)
except:
- logging.warning('could not parse line in torrent list: '+l)
+ logger.warning('could not parse line in torrent list: '+l)
if parsed.has_key(h):
del removed[h]
else:
Modified: debtorrent/trunk/debtorrent-client.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/debtorrent-client.py?rev=197&op=diff
==============================================================================
--- debtorrent/trunk/debtorrent-client.py (original)
+++ debtorrent/trunk/debtorrent-client.py Sat Aug 4 20:48:51 2007
@@ -8,6 +8,9 @@
This script implements a client daemon for managing multiple
debtorrent downloads.
+
+ at type logger: C{logging.Logger}
+ at var logger: the logger to send all log messages to for this module
"""
@@ -27,6 +30,8 @@
import os, logging
from DebTorrent import version
from DebTorrent.ConfigDir import ConfigDir
+
+logger = logging.getLogger()
def run(params):
"""Runs the downloader.
@@ -57,31 +62,31 @@
# Create the root handler (removing any others)
hdlr = logging.FileHandler(outfilename, 'a')
- hdlr.setFormatter(logging.Formatter('%(asctime)s %(threadName)s %(levelname)s %(module)s %(name)s %(message)s'))
+ hdlr.setFormatter(logging.Formatter('%(asctime)s %(threadName)s %(name)s %(levelname)s %(message)s'))
for h in logging.root.handlers:
logging.root.removeHandler(h)
logging.root.addHandler(hdlr)
logging.root.setLevel(config['log_level'])
- logging.info('Logging begins')
+ logger.info('Logging begins')
# Continue
if config['save_options']:
configdir.saveConfig(config)
configdir.deleteOldCacheData(config['expire_cache_data'])
except ValueError, e:
- logging.error('error: ' + str(e))
- logging.error("Usage: debtorrent-client.py <global options>")
- logging.error(get_usage(defaults, 80, configdefaults))
+ logger.error('error: ' + str(e))
+ logger.error("Usage: debtorrent-client.py <global options>")
+ logger.error(get_usage(defaults, 80, configdefaults))
logging.shutdown()
exit(1)
except IOError, e:
- logging.exception('error: ' + str(e))
+ logger.exception('error: ' + str(e))
logging.shutdown()
exit(2)
LaunchMany(config, configdir)
- logging.info('Shutting down')
+ logger.info('Shutting down')
logging.shutdown()
if __name__ == '__main__':
More information about the Debtorrent-commits
mailing list