def launch_coroutine(queue_task, f, *args, **kwargs): main_df = Deferred() try: g = f(*args, **kwargs) except Exception, e: if debug: traceback.print_exc() main_df.errback(sys.exc_info())
def initiateOp(self, handle, seekpos, buffer): df = Deferred() try: self.reactor.issueReadFile(handle, seekpos, buffer, self.ovDone, (handle, buffer)) except: df.errback(sys.exc_info()) else: self.df = df return df
def initiateOp(self, handle, seekpos, buffer): assert len(buffer) > 0 assert seekpos >= 0 df = Deferred() try: self.reactor.issueWriteFile(handle, seekpos, buffer, self.ovDone, (handle, buffer)) except: df.errback(sys.exc_info()) else: self.df = df return df
def acquire_handle(self, filename, for_write, length=0): df = Deferred() # abort disk ops on unregistered files if filename not in self.file_to_torrent: df.callback(None) return df if self.active_file_to_handles.total_length() == self.max_files_open: self.waiting_ops.append((df, filename, for_write, length)) else: self._produce_handle(df, filename, for_write, length) return df
def sendRequest(self, method, args): # make message # send it msg = {TID: chr(self.mtid), TYP: REQ, REQ: method, ARG: args} self.mtid = (self.mtid + 1) % 256 s = bencode(msg) d = Deferred() self.tids[msg[TID]] = d self.call_later(self.timeOut, KRPC_TIMEOUT, (msg[TID], )) self.call_later(self._send, 0, (s, d)) return d
def findNode(self, id, callback, errback=None): """ returns the contact info for node, or the k closest nodes, from the global table """ # get K nodes out of local table/cache, or the node we want nodes = self.table.findNodes(id, invalid=True) l = [x for x in nodes if x.invalid] if len(l) > 4: nodes = sample(l, 4) + self.table.findNodes(id, invalid=False)[:4] d = Deferred() if errback: d.addCallbacks(callback, errback) else: d.addCallback(callback) if len(nodes) == 1 and nodes[0].id == id: d.callback(nodes) else: # create our search state state = FindNode(self, id, d.callback, self.rawserver.add_task) self.rawserver.external_add_task(state.goWithNodes, 0, (nodes, ))
def findNode(self, id, callback, errback=None): """ returns the contact info for node, or the k closest nodes, from the global table """ # get K nodes out of local table/cache, or the node we want nodes = self.table.findNodes(id, invalid=True) l = [x for x in nodes if x.invalid] if len(l) > 4: nodes = sample(l , 4) + self.table.findNodes(id, invalid=False)[:4] d = Deferred() if errback: d.addCallbacks(callback, errback) else: d.addCallback(callback) if len(nodes) == 1 and nodes[0].id == id : d.callback(nodes) else: # create our search state state = FindNode(self, id, d.callback, self.rawserver.add_task) self.rawserver.external_add_task(state.goWithNodes, 0, (nodes,))