import storage
import parsing
+import config
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)