def validQuery(self, portOnServer, portOnClient): """ Called when a valid query is received to look up and deliver the response. @param portOnServer: The server port from the query. @param portOnClient: The client port from the query. """ serverAddr = self.transport.getHost().host, portOnServer clientAddr = self.transport.getPeer().host, portOnClient defer.maybeDeferred(self.lookup, serverAddr, clientAddr).addCallback( self._cbLookup, portOnServer, portOnClient).addErrback(self._ebLookup, portOnServer, portOnClient)
def validQuery(self, portOnServer, portOnClient): """ Called when a valid query is received to look up and deliver the response. @param portOnServer: The server port from the query. @param portOnClient: The client port from the query. """ serverAddr = self.transport.getHost().host, portOnServer clientAddr = self.transport.getPeer().host, portOnClient defer.maybeDeferred(self.lookup, serverAddr, clientAddr ).addCallback(self._cbLookup, portOnServer, portOnClient ).addErrback(self._ebLookup, portOnServer, portOnClient )
def do_get(self, key): if key is None: self.sendCode(400, 'Command %r takes 1 parameters.' % 'get') else: d = defer.maybeDeferred(self.factory.get, key) d.addCallbacks(self._cbGot, self._cbNot) d.addErrback(log.err)
def setMetadata(self, meta): self.meta = meta sets = [] for p in self.users.itervalues(): d = defer.maybeDeferred(p.groupMetaUpdate, self, meta) d.addErrback(self._ebUserCall, p=p) sets.append(d) defer.DeferredList(sets).addCallback(self._cbUserCall) return defer.succeed(None)
def receive(self, sender, recipient, message): assert recipient is self receives = [] for p in self.users.itervalues(): if p is not sender: d = defer.maybeDeferred(p.receive, sender, self, message) d.addErrback(self._ebUserCall, p=p) receives.append(d) defer.DeferredList(receives).addCallback(self._cbUserCall) return defer.succeed(None)
def add(self, user): assert iwords.IChatClient.providedBy(user), "%r is not a chat client" % (user,) if user.name not in self.users: additions = [] self.users[user.name] = user for p in self.users.itervalues(): if p is not user: d = defer.maybeDeferred(p.userJoined, self, user) d.addErrback(self._ebUserCall, p=p) additions.append(d) defer.DeferredList(additions).addCallback(self._cbUserCall) return defer.succeed(None)
def remove(self, user, reason=None): assert reason is None or isinstance(reason, unicode) try: del self.users[user.name] except KeyError: pass else: removals = [] for p in self.users.itervalues(): if p is not user: d = defer.maybeDeferred(p.userLeft, self, user, reason) d.addErrback(self._ebUserCall, p=p) removals.append(d) defer.DeferredList(removals).addCallback(self._cbUserCall) return defer.succeed(None)
def __call__(self): def cb(result): if self.running: self._reschedule() else: d, self.deferred = self.deferred, None d.callback(self) def eb(failure): self.running = False d, self.deferred = self.deferred, None d.errback(failure) self.call = None d = defer.maybeDeferred(self.f, *self.a, **self.kw) d.addCallback(cb) d.addErrback(eb)
def do_next(result): """ Take the first initializer and process it. On success, the initializer is removed from the list and then next initializer will be tried. """ if result is Reset: return None try: init = self.xmlstream.initializers[0] except IndexError: self.xmlstream.dispatch(self.xmlstream, STREAM_AUTHD_EVENT) return None else: d = defer.maybeDeferred(init.initialize) d.addCallback(remove_first) d.addCallback(do_next) return d
def _callFromThread(): result = defer.maybeDeferred(f, *a, **kw) result.addBoth(queue.put)