Initial fill of TreeTextFileAccess.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 15:40:51 +0000 (18:40 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 15:40:51 +0000 (18:40 +0300)
ppf/new/storage.py

index 2abcc00..e8c7750 100644 (file)
@@ -4,6 +4,9 @@ Storage class for P2P logging information.
 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
 """
 
+import os
+import os.path
+
 message_types = {
         'CHOKE': {'id': 1, 'parameters': None},
         'UNCHOKE': {'id': 2, 'parameters': None},
@@ -172,7 +175,7 @@ class SwarmDataAccess():
     def __init__(self):
         pass
 
-    def add_swarm(self, torrent_filename, data_size, description):
+    def add_swarm(self, swarm):
         pass
 
     def remove_swarm(self):
@@ -184,19 +187,19 @@ class SwarmDataAccess():
     def update_swarm(self):
         pass
 
-    def add_session(self, swarm_id, btclient_id, system_os, system_os_version, system_ram, system_cpu, public_):
+    def add_client_session(self, session):
         pass
 
-    def remove_session(self):
+    def remove_client_session(self):
         pass
 
-    def get_session(self):
+    def get_client_session(self):
         pass
 
-    def update_session(self):
+    def update_client_session(self):
         pass
 
-    def add_peer_status_message(self):
+    def add_peer_status_message(self, msg):
         pass
 
     def remove_peer_status_message(self):
@@ -208,7 +211,7 @@ class SwarmDataAccess():
     def update_peer_status_message(self):
         pass
 
-    def add_status_message(self):
+    def add_status_message(self, msg):
         pass
 
     def remove_status_message(self):
@@ -220,7 +223,7 @@ class SwarmDataAccess():
     def update_status_message(self):
         pass
 
-    def add_verbose_message(self):
+    def add_verbose_message(self, msg):
         pass
 
     def remove_verbose_message(self):
@@ -234,11 +237,51 @@ class SwarmDataAccess():
 
 class FileAccess(SwarmDataAccess):
     def __init__(self, path):
-        self.path = path
+        self.base_path = path
 
 class TreeTextFileAccess(FileAccess):
     def __init__(self, path):
         super(TextTreeFileAccess, self).__init(path)
+        # TODO: Check exception.
+        os.mkdir(self.base_path)
+
+    def find_last_folder_id(self):
+        """
+        Find last numeric folder in base_path folder.
+        The last numeric folder is the last swarm_id.
+        """
+        dir_list = []
+        pattern = re.compile("[0-9]+")
+
+        # Browse entries in base_path folder.
+        listing = os.listdir(self.base_path)
+        for entry in listing:
+            # If directory name is a number (id) add it to the list.
+            if os.path.isdir(entry):
+                if pattern.match(entry):
+                    dir_list.append(int(entry))
+
+        if dir_list.empty():
+            return None
+        else:
+            dir_list.sort()
+            return dir_list[len(dir_list)-1]
+
+    def add_swarm(self, swarm):
+        f = open(os.path.join(self.base_path, "swarm.conf"))
+        pass
+
+    def add_client_session(self, session):
+        pass
+
+    def add_peer_status_message(self, msg):
+        pass
+
+    def add_status_message(self, msg):
+        pass
+
+    def add_verbose_message(self, msg):
+        pass
 
 class DatabaseAccess(SwarmDataAccess):
     def __init__(self):