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
Exemple #5
0
 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
Exemple #6
0
    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, ))
Exemple #7
0
    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,))