Exemplo n.º 1
0
    def __init__(self):
        self.json_call_queue = None
        self.json_response_dict = None  #JSON responses are pushed here indexed by rpc ID
        self.json_out_queue = None  #packets of JSON responses are pushed here awaiting postprocessing and transmission
        self.process_pool = []
        self.congest_connect_state = None
        self.storage_directory = ""
        self.a_s_list = []  #list of autoSync objects
        self.command_port = None

        #Objects shared across processes
        self.my_machine_ID = ""
        self.manager = Manager()
        self.share_machine_dict = self.manager.dict(
        )  #maps share IDs to machine IDs
        #self.share_key_dict = self.manager.dict()  #maps share IDs to corresponding public keys (or certificates?)  #TODO: implement
        self.machine_address_dict = self.manager.dict(
        )  #maps machine IDs to url (IP:port)
        self.autosync_share_working_directory_dict = self.manager.dict(
        )  #lists all autosynced working directories for a given share
        self.autosync_working_directory_dict = self.manager.dict(
        )  #given a working directory return the auto sync observer
        self.autosyncmanager = AutoSyncManager(self.json_response_dict)

        #register JSONRPC functions
        self.method_dict = dict(
        )  #function pointers to registered JSONRPC functions
        self.register_func('ping', self.ping)
        self.register_func('get_file', self.get_file)
        self.register_func('save_file_block', self.save_file_block)
        self.register_func('update_machine_address',
                           self.update_machine_address)
        self.register_func('add_share_to_machine', self.add_share_to_machine)
        self.register_func('has_file', self.has_file)
        self.register_func('push_update_to_peer', self.push_update_to_peer)
        self.register_func('register_auto_sync', self.register_auto_sync)
        self.register_func('commit', self.commit)
        self.register_func('restore', self.restore)
        self.register_func('sync_new_commit', self.sync_new_commit)