From: Razvan Deaconescu Date: Sun, 21 Aug 2011 14:30:05 +0000 (+0300) Subject: ppf: Add storage.py. X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=91b7cea7e3c156000a3af17e56b211fa4cd6d84c;p=cs-p2p-next.git ppf: Add storage.py. Swarm data logging backend. --- diff --git a/ppf/new/storage.py b/ppf/new/storage.py new file mode 100644 index 0000000..1890dff --- /dev/null +++ b/ppf/new/storage.py @@ -0,0 +1,286 @@ +""" +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