예제 #1
0
 def get_socket_to_routers(self):
     socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                   self.socket_type)
     routers = self.matchmaker.get_routers()
     for router_address in routers:
         socket.connect_to_host(router_address)
     return socket
 def get_socket_to_broker(self, target):
     socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                   self.socket_type)
     self._track_socket(socket, target)
     address = zmq_address.get_broker_address(self.conf)
     socket.connect_to_address(address)
     return socket
예제 #3
0
 def get_socket_to_hosts(self, target, hosts):
     if str(target) in self.outbound_sockets:
         socket = self._check_for_new_hosts(target)
     else:
         socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                       self.socket_type)
         self._connect_to_hosts(socket, target, hosts)
     return socket
예제 #4
0
 def _check_hosts_connections(self, target, listener_type):
     if self.socket is None:
         self.socket = zmq_socket.ZmqSocket(self.zmq_context,
                                            self.socket_type)
         self.outbound_sockets[str(target)] = self.socket
         address = zmq_address.get_broker_address(self.conf)
         self._connect_to_address(self.socket, address, target)
     return self.socket
 def get_socket(self, target):
     key = self._key_from_target(target)
     if key in self.outbound_sockets:
         socket = self._check_for_new_hosts(target)
     else:
         socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                       self.socket_type)
         self._get_hosts_and_connect(socket, target)
     return socket
예제 #6
0
 def __init__(self, conf, poller, server):
     super(SubConsumer, self).__init__(conf, poller, server)
     self.matchmaker = server.matchmaker
     self.target = server.target
     self.socket = zmq_socket.ZmqSocket(self.conf, self.context, zmq.SUB)
     self.sockets.append(self.socket)
     self._subscribe_on_target(self.target)
     self.on_publishers(self.matchmaker.get_publishers())
     self.poller.register(self.socket, self.receive_message)
 def get_socket_to_publishers(self):
     if self.socket_to_publishers is not None:
         return self.socket_to_publishers
     self.socket_to_publishers = zmq_socket.ZmqSocket(
         self.conf, self.zmq_context, self.socket_type)
     publishers = self.matchmaker.get_publishers()
     for pub_address, router_address in publishers:
         self.socket_to_publishers.connect_to_host(router_address)
     return self.socket_to_publishers
예제 #8
0
 def get_socket_to_hosts(self, target, hosts):
     key = str(target)
     if key in self.outbound_sockets:
         socket, tm = self.outbound_sockets[key]
     else:
         socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                       self.socket_type)
         self._connect_to_hosts(socket, target, hosts)
     return socket
예제 #9
0
 def __init__(self, conf, poller, server):
     super(SubConsumer, self).__init__(conf, poller, server)
     self.matchmaker = server.matchmaker
     self.subscriptions = set()
     self.targets = []
     self._socket_lock = threading.Lock()
     self.socket = zmq_socket.ZmqSocket(self.conf, self.context, zmq.SUB)
     self.sockets.append(self.socket)
     self.id = uuid.uuid4()
     self.publishers_poller = MatchmakerPoller(self.matchmaker,
                                               on_result=self.on_publishers)
예제 #10
0
 def get_socket_to_routers(self, identity=None):
     if self.socket_to_routers is not None:
         return self.socket_to_routers
     self.socket_to_routers = zmq_socket.ZmqSocket(
         self.conf, self.zmq_context, self.socket_type,
         immediate=self.conf.oslo_messaging_zmq.zmq_immediate,
         identity=identity)
     routers = self.matchmaker.get_routers()
     for be_router_address in routers:
         self.socket_to_routers.connect_to_host(be_router_address)
     return self.socket_to_routers
예제 #11
0
 def __init__(self, conf, context, matchmaker):
     wrapper = zmq_sub_consumer.SubscriptionMatchmakerWrapper(
         conf, matchmaker)
     super(LocalPublisherProxy, self).__init__(conf, context, wrapper)
     self.fe_sub = zmq_socket.ZmqSocket(conf, context, zmq.SUB, False)
     self.fe_sub.setsockopt(zmq.SUBSCRIBE, b'')
     self.connection_updater = zmq_sub_consumer.SubscriberConnectionUpdater(
         conf, self.matchmaker, self.fe_sub)
     self.poller.register(self.fe_sub, self.receive_message)
     self.publisher = zmq_publisher_proxy.PublisherProxy(
         conf, matchmaker, sender=zmq_sender.LocalPublisherSender())
예제 #12
0
 def _check_hosts_connections(self, target, listener_type):
     #  TODO(ozamiatin): Place for significant optimization
     #  Matchmaker cache should be implemented
     if str(target) in self.outbound_sockets:
         socket = self.outbound_sockets[str(target)]
     else:
         hosts = self.matchmaker.get_hosts(target, listener_type)
         socket = zmq_socket.ZmqSocket(self.zmq_context, self.socket_type)
         self.outbound_sockets[str(target)] = socket
         for host in hosts:
             self._connect_to_host(socket, host, target)
     return socket
예제 #13
0
    def _check_hosts_connections(self, target, listener_type):
        if str(target) in self.outbound_sockets:
            socket = self.outbound_sockets[str(target)]
        else:
            hosts = self.matchmaker.get_hosts(target, listener_type)
            socket = zmq_socket.ZmqSocket(self.zmq_context, self.socket_type)
            self.outbound_sockets[str(target)] = socket

            for host in hosts:
                self._connect_to_host(socket, host, target)

        return socket
예제 #14
0
 def __init__(self, conf, poller, server):
     super(SubConsumer, self).__init__(conf, poller, server)
     self.matchmaker = server.matchmaker
     self.target = server.target
     self.socket = zmq_socket.ZmqSocket(self.conf,
                                        self.context,
                                        zmq.SUB,
                                        immediate=False)
     self.sockets.append(self.socket)
     self._subscribe_on_target(self.target)
     self.connection_updater = SubscriberConnectionUpdater(
         conf, self.matchmaker, self.socket)
     self.poller.register(self.socket, self.receive_message)
예제 #15
0
 def get_cached_socket(self, target_key, hosts=None, immediate=True):
     hosts = [] if hosts is None else hosts
     socket = self.sockets.get(target_key, None)
     if socket is None:
         LOG.debug("CREATING NEW socket for target_key %s " % target_key)
         socket = zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                       self.socket_type,
                                       immediate=immediate)
         self.sockets[target_key] = socket
     for host in hosts:
         socket.connect_to_host(host)
     LOG.debug("Target key: %s socket:%s" % (target_key,
                                             socket.handle.identity))
     return socket
예제 #16
0
 def __init__(self, conf, poller, server):
     super(SubConsumer, self).__init__(conf, poller, server)
     self.matchmaker = server.matchmaker
     self.target = server.target
     self.socket = zmq_socket.ZmqSocket(self.conf,
                                        self.context,
                                        zmq.SUB,
                                        immediate=False,
                                        identity=self._generate_identity())
     self.sockets.append(self.socket)
     self.host = self.socket.handle.identity
     self._subscribe_to_topic()
     self.connection_updater = SubscriberConnectionUpdater(
         conf, self.matchmaker, self.socket)
     self.poller.register(self.socket, self.receive_message)
     LOG.info(_LI("[%s] Run SUB consumer"), self.host)
예제 #17
0
 def get_socket(self, immediate=True):
     return zmq_socket.ZmqSocket(self.conf, self.zmq_context,
                                 self.socket_type, immediate=immediate)
예제 #18
0
 def get_socket(self):
     socket = zmq_socket.ZmqSocket(self.conf,
                                   self.zmq_context,
                                   self.socket_type,
                                   immediate=False)
     return socket
예제 #19
0
 def __init__(self, conf, context):
     self.socket = zmq_socket.ZmqSocket(conf, context, zmq.PUSH)