#!/usr/bin/env python
+
+import sys
import sqlite3
-conn = sqlite3.connect('p2p-next.db')
-curs = conn.cursor()
-
-def insert_swarms(row):
- try:
- curs.execute("insert into swarms values (?,?,?,?,?)", row)
- conn.commit()
- except sqlite3.Error as e:
- print ("[swarms]An error ocurred: ", e.args[0])
- return
-
-def insert_btclients(row):
- try:
- curs.execute("insert into btclients values (?,?,?,?,?)", row)
- conn.commit()
- except sqlite3.Error as e:
- print ("[btclients]An error ocurred: ", e.args[0])
- return
-
-def insert_client_session(row):
- try:
- curs.execute("insert into client_session values (?,?,?,?,?,?,?,?,?,?,?,?)", row)
- conn.commit()
- except sqlite3.Error as e:
- print ("[client_session]An error ocurred: ", e.args[0])
- return
-
-def insert_status_messages(row):
- try:
- curs.execute("[status_messages]insert into swarms values (?,?,?,?,?,?,?,?,?)", row)
- conn.commit()
- except sqlite3.Error as e:
- print ("An error ocurred: ", e.args[0])
- return
-
-def insert_verbose_messages(row):
- try:
- curs.execute("[verbose_messages]insert into swarms values (?,?,?,?,?,?,?,?,?)", row)
- conn.commit()
- except sqlite3.Error as e:
- print ("An error ocurred: ", e.args[0])
- return
-
-for t in [('1', 'mumu', '1024', 'ceva', 'URL'),
- ('2', 'gugu', '1024', 'ceva', 'URL'),
- ('3', 'gaga', '1024', 'ceva', 'URL'),
- ]:
- insert_swarms(t)
-
-for t in [('1', 'tribler', 'python', 1, 0),
- ]:
- insert_btclients(t)
-
-for t in [('1', '1', '2', 'Linux', '2.6.30', '256', '1833', '0.0.0.0', '6969', '256', '96', '123131.1231')
- ]:
- insert_client_session(t)
-
-tables = ['swarms', 'btclients', 'swarms', 'client_session', 'status_messages', 'verbose_messages']
-for t in tables:
- curs.execute("select * from '%s'" %t)
- for row in curs:
- print row
-
-conn.close()
\ No newline at end of file
+class DatabaseAccess:
+ """
+ TODO class comments here
+ """
+
+ def __init__ (self, dbname):
+ self.dbname = dbname
+
+ def connect(self):
+ self.conn = sqlite3.connect(self.dbname)
+ self.cursor = self.conn.cursor()
+
+ def disconnect(self):
+ self.cursor.close()
+ self.conn.close()
+
+ def get_cursor(self):
+ return self.cursor
+
+ def get_connection(self):
+ return self.conn
+
+ def get_status(self):
+ tables = ['swarms', 'btclients', 'swarms', 'client_session', 'status_messages', 'verbose_messages']
+ for t in tables:
+ try:
+ self.cursor.execute("select * from '%s'" %t)
+ for row in self.cursor:
+ print row
+ except sqlite3.Error, e:
+ print "[select] error: ", e.args[0]
+
+ def insert_swarms_row(self, row):
+ try:
+ self.cursor.execute("insert into swarms(torrent, filesize, purpose, source) values (?,?,?,?)", row)
+ self.conn.commit()
+ except sqlite3.Error, e:
+ print ("[swarms]An error ocurred: ", e.args[0])
+
+ def insert_swarms(self, torrent_file, filesize, purpose, source):
+ insert_swarms_row([torrent_file, filesize, purpose, source])
+
+ def insert_btclients_row(self, row):
+ try:
+ self.cursor.execute("insert into btclients(name, language, dht, streaming) values (?,?,?,?)", row)
+ self.conn.commit()
+ except sqlite3.Error, e:
+ print ("[btclients]An error ocurred: ", e.args[0])
+
+ def insert_btclients(self, client_name, language, dht, streaming):
+ btclients([client_name, language, dht, streaming])
+
+ def insert_client_session_row(self, row):
+ try:
+ self.cursor.execute("insert into client_session(swarm_id, client_id, system_os, system_os_version, system_ram, system_cpu, public_ip, public_port, ds_limit, us_limit, start_time) values (?,?,?,?,?,?,?,?,?,?,?)", row)
+ self.conn.commit()
+ except sqlite3.Error, e:
+ print ("[client_session]An error ocurred: ", e.args[0])
+
+ def insert_client_session(self, swarm_id, client_id, system_os, system_os_version, system_ram, system_cpu, public_ip, public_port, ds_limit, us_limit, start_time):
+ insert_client_session_row([swarm_id, client_id, system_os, system_os_version, system_ram, system_cpu, public_ip, public_port, ds_limit, us_limit, start_time]);
+
+ def insert_status_messages_row(self, row):
+ try:
+ self.cursor.execute("insert into status_messages values (?,?,?,?,?,?,?,?,?)", row)
+ self.conn.commit()
+ except sqlite3.Error, e:
+ print ("[status_messages]An error ocurred: ", e.args[0])
+
+ def insert_status_message(self, cs_id, timestamp, peer_num, dht, download_speed, upload_speed, download_size, upload_size, eta):
+ insert_status_message_row([cs_id, timestamp, peer_num, dht, download_speed, upload_speed, download_size, upload_size, eta])
+
+ def insert_verbose_messages_row(self, row):
+ try:
+ self.cursor.execute("insert into verbose_messages values (?,?,?,?,?,?,?,?,?)", row)
+ self.conn.commit()
+ except sqlite3.Error, e:
+ print ("[verbose_messages]An error ocurred: ", e.args[0])
+
+ def insert_verbose_messages(self, cs_id, timestamp, peer_ip, peer_port, message_type, _index, begin, length, listen_port):
+ insert_verbose_messages_row([cs_id, timestamp, peer_ip, peer_port, message_type, _index, begin, length, listen_port])
+
+"""
+Test case
+"""
+
+def main():
+ dba = DatabaseAccess("p2p-next.db")
+
+ dba.connect()
+
+ for t in [('DarkKnight', '123000', 'experiment', 'TVTorrents'),
+ ('Fedora', '1024', 'experiment', 'local'),
+ ('Pulp Fiction', '102400', 'streaming', 'isohunt'),
+ ]:
+ dba.insert_swarms_row(t)
+
+ for t in [('Tribler', 'Python', 1, 1),
+ ('libtorrent', 'C++', 1, 0),
+ ('Vuze', 'Java', 1, 0),
+ ]:
+ dba.insert_btclients_row(t)
+
+ for t in [('1', '2', 'Linux', '2.6.30', '256', '1833', '0.0.0.0', '6969', '256', '96', '123131.1231')
+ ]:
+ dba.insert_client_session_row(t)
+
+ for t in [('1', '2455128.10', '222', '0', '213', '56', '200', '300', '121.324')
+ ]:
+ dba.insert_status_messages_row(t)
+
+ for t in [('1', '2455128.121295811', '127.0.0.1', '1345', '0', '3', '4', '13', '777')
+ ]:
+ dba.insert_verbose_messages_row(t)
+
+ dba.get_status()
+
+ dba.disconnect()
+
+ """
+ for t in [('1', 'mumu', '1024', 'ceva', 'URL'),
+ ('2', 'gugu', '1024', 'ceva', 'URL'),
+ ('3', 'gaga', '1024', 'ceva', 'URL'),
+ ]:
+ insert_swarms(t)
+
+ for t in [('1', 'tribler', 'python', 1, 0),
+ ]:
+ insert_btclients(t)
+
+ for t in [('1', '1', '2', 'Linux', '2.6.30', '256', '1833', '0.0.0.0', '6969', '256', '96', '123131.1231')
+ ]:
+ insert_client_session(t)
+
+ tables = ['swarms', 'btclients', 'swarms', 'client_session', 'status_messages', 'verbose_messages']
+ for t in tables:
+ curs.execute("select * from '%s'" %t)
+ for row in curs:
+ print row
+ """
+
+if __name__ == "__main__":
+ sys.exit(main())