Example #1
0
 def tearDown(self):
     d3 = Deferred()
     self._serverProtocol.notifyOnDisconnect(lambda: d3.callback(None))
     return DeferredList([
         maybeDeferred(self.serverPort.stopListening),
         maybeDeferred(self.clientConn.disconnect), d3
     ])
Example #2
0
 def cleanup(data, protos, port):
     self.assert_(data == 'x'*(2*protos[0].transport.readBufferSize)+
                          'y'*(2*protos[0].transport.readBufferSize),
                          'did not get the right data')
     return DeferredList([
             maybeDeferred(protos[0].transport.loseConnection),
             maybeDeferred(protos[1].transport.loseConnection),
             maybeDeferred(port.stopListening)])
Example #3
0
    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
            )
Example #4
0
    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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 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)
Example #11
0
    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)
Example #12
0
        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
Example #13
0
 def _callFromThread():
     result = defer.maybeDeferred(f, *a, **kw)
     result.addBoth(queue.put)
Example #14
0
 def tearDown(self):
     d3 = Deferred()
     self._serverProtocol.notifyOnDisconnect(lambda: d3.callback(None))
     return DeferredList([
         maybeDeferred(self.serverPort.stopListening),
         maybeDeferred(self.clientConn.disconnect), d3])