def __init__(self, send_data, notif_listener, motes=None, auto_commit=True, options=DEFAULT_OPTIONS): self.send_data = send_data self.notif_listener = notif_listener self.register() self.files = {} if motes: self.all_motes = motes else: self.all_motes = [] self.auto_commit = auto_commit self.options = options self.transmit_list = BlockMetadata() # internal lists of motes self.handshake_motes = [] self.incomplete_motes = [] self.status_motes = [] self.commit_motes = [] self.complete_motes = [] self.failure_motes = [] # handle retries and failures self.orc = ReliableCommander.ReliableCommander( self.send_data, self.handle_failure, retry_delay=options.reliable_retry_delay, command_timeout=options.reliable_command_timeout, max_retries=options.reliable_max_retries) self.worker = NotifWorker() self.state = 'Init' # conditions self.data_event = Event() self.commit_event = Event()