Ejemplo n.º 1
0
    def subscribe(self, subscribe_task):
        """Subscribe to a given target"""
        if subscribe_task._service == SERVICE_NOTIFY:
            t = "notification"
            server = NotificationServer(subscribe_task._target,
                                        subscribe_task._in_queue,
                                        self.processor, self.link_retry_delay,
                                        self._notify_credit)
        else:
            t = "RPC"
            server = RPCServer(subscribe_task._target,
                               subscribe_task._in_queue, self.processor,
                               self.link_retry_delay, self._rpc_credit)

        LOG.debug("Subscribing to %(type)s target %(target)s", {
            'type': t,
            'target': subscribe_task._target
        })
        key = keyify(subscribe_task._target, subscribe_task._service)
        servers = self._servers.get(key)
        if servers is None:
            servers = {}
            self._servers[key] = servers
        servers[subscribe_task._subscriber_id] = server
        if self._active:
            server.attach(self._socket_connection.connection, self.addresser)
Ejemplo n.º 2
0
 def send(self, send_task):
     if send_task.deadline and send_task.deadline <= now():
         send_task._on_timeout()
         return
     if send_task.retry is None or send_task.retry < 0:
         send_task.retry = None
     key = keyify(send_task.target, send_task.service)
     sender = self._senders.get(key)
     if not sender:
         sender = Sender(send_task.target, self.processor,
                         self.link_retry_delay, send_task.service)
         self._senders[key] = sender
         if self.reply_link and self.reply_link.active:
             sender.attach(self._socket_connection.connection,
                           self.reply_link, self.addresser)
     sender.send_message(send_task)