示例#1
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)
示例#2
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
			)
示例#3
0
文件: postfix.py 项目: samis/blockBox
 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)
示例#4
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)
示例#5
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)
示例#6
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)
示例#7
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)
示例#8
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)
示例#9
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)
示例#10
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)
示例#11
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
示例#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
示例#13
0
 def _callFromThread():
     result = defer.maybeDeferred(f, *a, **kw)
     result.addBoth(queue.put)
示例#14
0
	def _callFromThread():
		result = defer.maybeDeferred(f, *a, **kw)
		result.addBoth(queue.put)