From: Razvan Deaconescu Date: Wed, 24 Aug 2011 17:54:08 +0000 (+0300) Subject: ppf/new: Add methods for parsing swarm and session archive files. X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=e2f0e59cd96b00686877829b01ce5c97d0ff702c;p=cs-p2p-next.git ppf/new: Add methods for parsing swarm and session archive files. --- diff --git a/ppf/new/top.py b/ppf/new/top.py index 5c0aa2b..3f4ef10 100644 --- a/ppf/new/top.py +++ b/ppf/new/top.py @@ -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)