ppf: Add storage.py.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 14:30:05 +0000 (17:30 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 14:30:09 +0000 (17:30 +0300)
Swarm data logging backend.

ppf/new/storage.py [new file with mode: 0644]

diff --git a/ppf/new/storage.py b/ppf/new/storage.py
new file mode 100644 (file)
index 0000000..1890dff
--- /dev/null
@@ -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