ppf/new: Add methods for parsing swarm and session archive files.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Wed, 24 Aug 2011 17:54:08 +0000 (20:54 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Wed, 24 Aug 2011 17:54:08 +0000 (20:54 +0300)
ppf/new/top.py

index 5c0aa2b..3f4ef10 100644 (file)
@@ -6,6 +6,7 @@ Top level functions for parsing and storing information.
 
 import storage
 import parsing
+import config
 
 def parse_store_session(writer, parser, session_id):
     """
@@ -25,3 +26,50 @@ def parse_store_session(writer, parser, session_id):
 
         msg.set_client_session_id(session_id)
         writer.add_message(msg)
+
+def parse_store_session_archive(archive_file, session_config_file,
+        access_config_file):
+    """
+    Parse configuration files and call parse_store_session.
+    """
+
+    sc = config.SessionConfig.load(swarm_config_file)
+    ac = config.AccessConfig.load(access_config_file)
+
+    # Get SwarmWriter instance from AccessConfig instance (ac).
+    swarm_writer = ac.get_swarm_writer()
+
+    session_id = sc.get_session_id(archive_file)
+
+    # TODO: This needs rethinking. Client type is designed to be stored in
+    # the database (referenced by the btclient_id).
+    client_type = swarm_writer.first_access_instance().get_client_type_for_session(session_id)
+    parser = parsing.LogParser.get_parser(client_type, archive_file)
+
+    parse_store_session(swarm_writer, parser, session_id)
+
+def parse_swarm(swarm_config_file, access_config_file):
+    """
+    Parse configuration files and iterate and parse client sessions.
+    """
+
+    sc = config.SwarmConfig.load(swarm_config_file)
+    ac = config.AccessConfig.load(access_config_file)
+
+    # Get SwarmWriter instance from AccessConfig instance (ac).
+    swarm_writer = ac.get_swarm_writer()
+
+    # TODO: Add proper SwarmWriter methods for adding swarms and sessions.
+    swarm_writer.add_swarm(sc.get_swarm())
+
+    for session in sc.get_session_list():
+        id = swarm_writer.add_client_session(session)
+        sc.update_session_id(session, id)
+
+    session_config = sc.get_session_config()
+
+    # TODO: Output session configuration file to disk.
+    # session_config.store(session_config_file)
+
+    for archive_file in sc.get_file_archives():
+        parse_store_session_config(archive_file, session_config_file, access_config_file)