--- /dev/null
+"""
+Storage class for P2P logging information.
+
+2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
+"""
+
+message_types = {
+ 'CHOKE': {'id': 1, 'parameters': None},
+ 'UNCHOKE': {'id': 2, 'parameters': None},
+ 'INTERESTED': {'id': 3, 'parameters': None},
+ 'NOT_INTERESTED': {'id': 4, 'parameters': None},
+ 'HAVE': {'id': 5, 'parameters': None},
+ 'BITFIELD': {'id': 6, 'parameters': None},
+ 'REQUEST': {'id': 7, 'parameters': None},
+ 'PIECE': {'id': 8, 'parameters': None},
+ 'CANCEL': {'id': 9, 'parameters': None},
+ 'DHT_PORT': {'id': 10, 'parameters': None}
+}
+
+bittorrent_clients = {
+ 'Tribler': {
+ 'id': 1,
+ 'language': 'Python',
+ 'url': 'http://www.tribler.org/trac',
+ 'dht_support': True,
+ 'streaming_support': True,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'NextShare': {
+ 'id': 2,
+ 'language': 'Python',
+ 'url': 'https://trac.p2p-next.org/',
+ 'dht_support': True,
+ 'streaming_support': True,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'libtorrent-rasterbar': {
+ 'id': 3,
+ 'language': 'C++',
+ 'url': 'http://www.rasterbar.com/products/libtorrent/',
+ 'dht_support': True,
+ 'streaming_support': True,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'Vuze': {
+ 'id': 4,
+ 'language': 'Java',
+ 'url': 'http://www.vuze.com/',
+ 'dht_support': True,
+ 'streaming_support': True,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'Transmission': {
+ 'id': 5,
+ 'language': 'C',
+ 'url': 'http://www.transmissionbt.com/',
+ 'dht_support': True,
+ 'streaming_support': False,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'Aria': {
+ 'id': 6,
+ 'language': 'C',
+ 'url': 'http://aria2.sourceforge.net/',
+ 'dht_support': True,
+ 'streaming_support': False,
+ 'pxe_support': None,
+ 'features': None
+ },
+ 'Mainline': {
+ 'id': 7,
+ 'language': 'Python',
+ 'url': 'http://www.bittorrent.com/',
+ 'dht_support': True,
+ 'streaming_support': False,
+ 'pxe_support': None,
+ 'features': None
+ }
+}
+
+transfer_directions = {
+ 'to': 1,
+ 'from': 2
+}
+
+class BTClient(object):
+ """ Class mimics a C structure. """
+ def __init__(self, name=None, language=None, url=None, dht_support=None,
+ streaming_support=None, pxe_support=None, features=None):
+ self.name = name
+ self.language = language
+ self.url = url
+ self.dht_support = dht_support
+ self.streaming_support = streaming_support
+ self.pxe_support = pxe_support
+ self.features = features
+
+class Swarm(object):
+ """ Class mimics a C structure. """
+ def __init__(self, torrent_filename=None, data_size=None,
+ description=None):
+ self.torrent_filename = torrent_filename
+ self.data_size = data_size
+ self.description = description
+
+class ClientSession(object):
+ """ Class mimics a C structure. """
+ def __init__(self, swarm_id=None, btclient_id=None, system_os=None,
+ system_os_version=None, system_ram=None, system_cpu=None,
+ public_ip=None, public_port=None, ds_limit=None, us_limit=None,
+ start_time=None, dht_enabled=None, pxe_enabled=None,
+ streaming_enabled=None, features=None, description=None):
+ self.swarm_id = swarm_id
+ self.btclient_id = btclient_id
+ self.system_os = system_os
+ self.system_os_version = system_os_version
+ self.system_ram = system_ram
+ self.system_cpu = system_cpu
+ self.public_ip = public_ip
+ self.public_port = public_port
+ self.ds_limit = ds_limit
+ self.us_limit = us_limit
+ self.start_time = start_time
+ self.dht_enabled = dht_enabled
+ self.pxe_enabled = pxe_enabled
+ self.streaming_enabled = streaming_enabled
+ self.features = features
+ self.description = description
+
+class PeerStatusMessage(object):
+ """ Class mimics a C structure. """
+ def __init__(self, client_session_id=None, date=None, time=None,
+ peer_ip=None, peer_port=None, download_speed=None,
+ upload_speed=None):
+ self.client_session_id = client_session_id
+ self.date = date
+ self.time = time
+ self.peer_ip = peer_ip
+ self.peer_port = peer_port
+ self.download_speed = download_speed
+ self.upload_speed = upload_speed
+
+class StatusMessage(object):
+ """ Class mimics a C structure. """
+ def __init__(self, client_session_id=None, date=None, time=None,
+ num_peers=None, num_dht_peers=None, download_speed=None,
+ upload_speed=None, download_size=None, upload_size=None,
+ eta=None):
+ self.client_session_id = client_session_id
+ self.date = date
+ self.time = time
+ self.num_peers = num_peers
+ self.num_dht_peers = num_dht_peers
+ self.download_speed = download_speed
+ self.upload_speed = upload_speed
+ self.download_size = download_size
+ self.upload_size = upload_size
+ self.eta = eta
+
+class VerboseMessage(object):
+ """ Class mimics a C structure. """
+ def __init__(self, client_session_id=None, date=None, time=None,
+ transfer_direction=None, peer_ip=None, peer_port=None,
+ message_type=None, index=None, begin=None, length=None,
+ listen_port=None):
+ self.client_session_id = client_session_id
+ self.date = date
+ self.time = time
+ self.transfer_direction = transfer_direction
+ self.peer_ip = peer_ip
+ self.peer_port = peer_port
+ self.message_type = message_type
+ self.index = index
+ self.begin = begin
+ self.length = length
+ self.listen_port = listen_port
+
+class SwarmDataAccess():
+ def __init__(self):
+ pass
+
+ def add_btclient(self, name, language, url, dht_support,
+ streaming_support, pxe_support, features):
+ pass
+
+ def remove_btclient(self):
+ pass
+
+ def get_btclient(self):
+ pass
+
+ def update_btclient(self):
+ pass
+
+ def add_swarm(self, torrent_filename, data_size, description):
+ pass
+
+ def remove_swarm(self):
+ pass
+
+ def get_swarm(self):
+ pass
+
+ def update_swarm(self):
+ pass
+
+ def add_session(self, swarm_id, btclient_id, system_os, system_os_version, system_ram, system_cpu, public_):
+ pass
+
+ def remove_session(self):
+ pass
+
+ def get_session(self):
+ pass
+
+ def update_session(self):
+ pass
+
+ def add_peer_status_message(self):
+ pass
+
+ def remove_peer_status_message(self):
+ pass
+
+ def get_peer_status_message(self):
+ pass
+
+ def update_peer_status_message(self):
+ pass
+
+ def add_status_message(self):
+ pass
+
+ def remove_status_message(self):
+ pass
+
+ def get_status_message(self):
+ pass
+
+ def update_status_message(self):
+ pass
+
+ def add_verbose_message(self):
+ pass
+
+ def remove_verbose_message(self):
+ pass
+
+ def get_verbose_message(self):
+ pass
+
+ def update_verbose_message(self):
+ pass
+
+class FileAccess(SwarmDataAccess):
+ def __init__(self, path):
+ self.path = path
+
+class TreeTextFileAccess(FileAccess):
+ def __init__(self, path):
+ super(TextTreeFileAccess, self).__init(path)
+
+class DatabaseAccess(SwarmDataAccess):
+ def __init__(self):
+ pass
+
+ def connect(self, database):
+ self.conn = None
+ self.cursor = None
+ return self.conn
+
+ def disconnect(self):
+ pass
+
+class SQLiteDatabaseAccess(DatabaseAccess):
+ def __init___(self):
+ pass
+
+class MySQLDatabaseAccess(DatabaseAccess):
+ def __init___(self):
+ pass