2 Top level functions for parsing and storing information.
4 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
11 def parse_store_session(writer, parser, session_id):
13 Parse and store information for a BitTorrent session.
15 writer is an instance of the storage.SwarmWriter class.
16 parser is an instance of the parsing.LogParser class (may be
17 LibtorrentLogParser, TriblerLogParser or some other).
18 session_id is the client session id.
22 msg = parser.get_next_message()
23 # In case of no more messages, exit loop.
27 msg.set_client_session_id(session_id)
28 writer.add_message(msg)
30 def parse_store_session_archive(archive_file, session_config_file,
33 Parse configuration files and call parse_store_session.
36 sc = config.SessionConfig.load(swarm_config_file)
37 ac = config.AccessConfig.load(access_config_file)
39 # Get SwarmWriter instance from AccessConfig instance (ac).
40 swarm_writer = ac.get_swarm_writer()
42 session_id = sc.get_session_id(archive_file)
44 # TODO: This needs rethinking. Client type is designed to be stored in
45 # the database (referenced by the btclient_id).
46 client_type = swarm_writer.first_access_instance().get_client_type_for_session(session_id)
47 parser = parsing.LogParser.get_parser(client_type, archive_file)
49 parse_store_session(swarm_writer, parser, session_id)
51 def parse_swarm(swarm_config_file, access_config_file):
53 Parse configuration files and iterate and parse client sessions.
56 sc = config.SwarmConfig.load(swarm_config_file)
57 ac = config.AccessConfig.load(access_config_file)
59 # Get SwarmWriter instance from AccessConfig instance (ac).
60 swarm_writer = ac.get_swarm_writer()
62 # TODO: Add proper SwarmWriter methods for adding swarms and sessions.
63 swarm_writer.add_swarm(sc.get_swarm())
65 for session in sc.get_session_list():
66 id = swarm_writer.add_client_session(session)
67 sc.update_session_id(session, id)
69 session_config = sc.get_session_config()
71 # TODO: Output session configuration file to disk.
72 # session_config.store(session_config_file)
74 for archive_file in sc.get_file_archives():
75 parse_store_session_config(archive_file, session_config_file, access_config_file)