systematic use of context managers for dealing with files instead of open()/close...
[nepi.git] / src / nepi / data / processing / ccn / parser.py
index 7d35d9e..676a205 100644 (file)
@@ -69,82 +69,80 @@ def parse_file(filename):
     faces = dict()
     sep = " "
 
-    f = open(filename, "r")
-
-    data = []
-
-    for line in f:
-        cols =  line.strip().split(sep)
-
-        # CCN_PEEK
-        # MESSAGE interest_from
-        # 1374181938.808523 ccnd[9245]: debug.4352 interest_from 6 ccnx:/test/bunny.ts (23 bytes,sim=0CDCC1D7)
-        #
-        # MESSAGE interest_to
-        # 1374181938.812750 ccnd[9245]: debug.3502 interest_to 5 ccnx:/test/bunny.ts (39 bytes,i=2844,sim=0CDCC1D7)
-        #
-        # MESSAGE CONTENT FROM
-        # 1374181938.868682 ccnd[9245]: debug.4643 content_from 5 ccnx:/test/bunny.ts/%FD%05%1E%85%8FVw/%00/%9E%3D%01%D9%3Cn%95%2BvZ%8
-        #
-        # MESSAGE CONTENT_TO
-        # 1374181938.868772 ccnd[9245]: debug.1619 content_to 6 ccnx:/test/bunny.ts/%FD%05%1E%85%8FVw/%00/%9E%3D%01%D9%3Cn%95%2BvZ%8
-        #
-        # 1375596708.222304 ccnd[9758]: debug.3692 interest_expiry ccnx:/test/bunny.ts/%FD%05%1E%86%B1GS/%00%0A%F7 (44 bytes,c=0:1,i=2819,sim=49FA8048)
-
-        # External face creation
-        # 1374181452.965961 ccnd[9245]: accepted datagram client id=5 (flags=0x40012) 204.85.191.10 port 9695
-
-        if line.find("accepted datagram client") > -1:
-            face_id = (cols[5]).replace("id=",'')
-            ip = cols[7] 
-            port = cols[9]
-            faces[face_id] = (ip, port)
-            continue
-
-        # 1374181452.985296 ccnd[9245]: releasing face id 4 (slot 4)
-        if line.find("releasing face id") > -1:
-            face_id = cols[5]
-            if face_id in faces:
-                del faces[face_id]
-            continue
-
-        if len(cols) < 6:
-            continue
-
-        timestamp = cols[0]
-        message_type = cols[3]
+    with open(filename, "r") as f:
+
+        data = []
+
+        for line in f:
+            cols =  line.strip().split(sep)
+
+            # CCN_PEEK
+            # MESSAGE interest_from
+            # 1374181938.808523 ccnd[9245]: debug.4352 interest_from 6 ccnx:/test/bunny.ts (23 bytes,sim=0CDCC1D7)
+            #
+            # MESSAGE interest_to
+            # 1374181938.812750 ccnd[9245]: debug.3502 interest_to 5 ccnx:/test/bunny.ts (39 bytes,i=2844,sim=0CDCC1D7)
+            #
+            # MESSAGE CONTENT FROM
+            # 1374181938.868682 ccnd[9245]: debug.4643 content_from 5 ccnx:/test/bunny.ts/%FD%05%1E%85%8FVw/%00/%9E%3D%01%D9%3Cn%95%2BvZ%8
+            #
+            # MESSAGE CONTENT_TO
+            # 1374181938.868772 ccnd[9245]: debug.1619 content_to 6 ccnx:/test/bunny.ts/%FD%05%1E%85%8FVw/%00/%9E%3D%01%D9%3Cn%95%2BvZ%8
+            #
+            # 1375596708.222304 ccnd[9758]: debug.3692 interest_expiry ccnx:/test/bunny.ts/%FD%05%1E%86%B1GS/%00%0A%F7 (44 bytes,c=0:1,i=2819,sim=49FA8048)
+
+            # External face creation
+            # 1374181452.965961 ccnd[9245]: accepted datagram client id=5 (flags=0x40012) 204.85.191.10 port 9695
+
+            if line.find("accepted datagram client") > -1:
+                face_id = (cols[5]).replace("id=",'')
+                ip = cols[7] 
+                port = cols[9]
+                faces[face_id] = (ip, port)
+                continue
 
-        if message_type not in ["interest_from", "interest_to", "content_from", 
-                "content_to", "interest_dupnonce", "interest_expiry"]:
-            continue
+            # 1374181452.985296 ccnd[9245]: releasing face id 4 (slot 4)
+            if line.find("releasing face id") > -1:
+                face_id = cols[5]
+                if face_id in faces:
+                    del faces[face_id]
+                continue
 
-        face_id = cols[4] 
-        content_name = cols[5]
+            if len(cols) < 6:
+                continue
 
-        # Interest Nonce ? -> 412A74-0844-0008-50AA-F6EAD4
-        nonce = ""
-        if message_type in ["interest_from", "interest_to", "interest_dupnonce"]:
-            last = cols[-1]
-            if len(last.split("-")) == 5:
-                nonce = last
+            timestamp = cols[0]
+            message_type = cols[3]
 
-        try:
-            size = int((cols[6]).replace('(',''))
-        except:
-            print("interest_expiry without face id!", line)
-            continue
+            if message_type not in ["interest_from", "interest_to", "content_from", 
+                    "content_to", "interest_dupnonce", "interest_expiry"]:
+                continue
 
-        # If no external IP address was identified for this face
-        # asume it is a local face
-        peer = "localhost"
+            face_id = cols[4] 
+            content_name = cols[5]
 
-        if face_id in faces:
-            peer, port = faces[face_id]
+            # Interest Nonce ? -> 412A74-0844-0008-50AA-F6EAD4
+            nonce = ""
+            if message_type in ["interest_from", "interest_to", "interest_dupnonce"]:
+                last = cols[-1]
+                if len(last.split("-")) == 5:
+                    nonce = last
 
-        data.append((content_name, timestamp, message_type, peer, face_id, 
-            size, nonce, line))
+            try:
+                size = int((cols[6]).replace('(',''))
+            except:
+                print("interest_expiry without face id!", line)
+                continue
 
-    f.close()
+            # If no external IP address was identified for this face
+            # asume it is a local face
+            peer = "localhost"
+    
+            if face_id in faces:
+                peer, port = faces[face_id]
+    
+            data.append((content_name, timestamp, message_type, peer, face_id, 
+                size, nonce, line))
 
     return data
 
@@ -155,9 +153,8 @@ def dump_content_history(content_history):
     return f.name
 
 def load_content_history(fname):
-    f = open(fname, "r")
-    content_history = pickle.load(f)
-    f.close()
+    with open(fname, "r") as f:
+        content_history = pickle.load(f)
 
     os.remove(fname)
     return content_history