def __init__(self, brokers="", proxy_brokers="", rx_port=5012, tx_port=5013): """ brokers / proxy brokers: additional brokers / proxies to connect to example: brokers="192.168.2.55:8012:8013 localhost:9012:9013 82.64.123.233:4567:8907" """ Actor.__init__(self) print "proxy actor created with id: ", self.actor_id self.brokers = brokers self.proxy_brokers = proxy_brokers self.my_ip = get_local_ip_addresses() self.rx_port = rx_port self.tx_port = tx_port self.contacts = DcsContactList() self.context = zmq.Context() self.msg_history = [] # list of [msg_id, timestamp] self.connection_list = [] self.link = Link() self.link.broker.receiver = self.broker_sub_receiver self.link.server.receiver = self.server_sub_receiver self.link.client.receiver = self.client_sub_receiver self.link.broker_client.receiver = self.broker_client_sub_receiver # create sub, pub and spawn the receivers for l in dict(self.link).values(): l.sub = self.context.socket(zmq.SUB) l.sub.setsockopt(zmq.SUBSCRIBE, '') l.sub.setsockopt(zmq.LINGER, 0) l.sub.setsockopt(zmq.RCVHWM, 0) l.pub = self.context.socket(zmq.PUB) l.pub.setsockopt(zmq.LINGER, 0) l.pub.setsockopt(zmq.SNDHWM, 0) gevent.spawn(l.receiver) self.create_server_on_a_random_port() # add proxy brokers to contact list self.contacts.add_from_contact_str(self.proxy_brokers) self.connect_to_contacts('client', self.contacts.contact_list) # create or watch to create address broker self.this_is_the_broker = False try: self.create_broker(watch=False) except: gevent.spawn(self.create_broker, watch=True) self.sync_contacts() gevent.sleep( 2 ) #TODO: change this with "as soon as connected all of the others"
def __init__(self, brokers="", proxy_brokers="", rx_port=5012, tx_port=5013): """ brokers / proxy brokers: additional brokers / proxies to connect to example: brokers="192.168.2.55:8012:8013 localhost:9012:9013 82.64.123.233:4567:8907" """ Actor.__init__(self) print "proxy actor created with id: ", self.actor_id self.brokers = brokers self.proxy_brokers = proxy_brokers self.my_ip = get_local_ip_addresses() self.rx_port = rx_port self.tx_port = tx_port self.contacts = DcsContactList() self.context = zmq.Context() self.msg_history = [] # list of [msg_id, timestamp] self.connection_list = [] self.link = Link() self.link.broker.receiver = self.broker_sub_receiver self.link.server.receiver = self.server_sub_receiver self.link.client.receiver = self.client_sub_receiver self.link.broker_client.receiver = self.broker_client_sub_receiver # create sub, pub and spawn the receivers for l in dict(self.link).values(): l.sub = self.context.socket(zmq.SUB) l.sub.setsockopt(zmq.SUBSCRIBE, '') l.sub.setsockopt(zmq.LINGER, 0) l.sub.setsockopt(zmq.RCVHWM, 1) l.pub = self.context.socket(zmq.PUB) l.pub.setsockopt(zmq.LINGER, 0) l.pub.setsockopt(zmq.SNDHWM, 1) gevent.spawn(l.receiver) self.create_server_on_a_random_port() # add proxy brokers to contact list self.contacts.add_from_contact_str(self.proxy_brokers) self.connect_to_contacts('client', self.contacts.contact_list) # create or watch to create address broker self.this_is_the_broker = False try: self.create_broker(watch=False) except: gevent.spawn(self.create_broker, watch=True) self.sync_contacts() gevent.sleep(2) #TODO: change this with "as soon as connected all of the others"
def __init__(self, broker_host="localhost", rx_port=5013, tx_port=5012): #super(ProxyActor, self).__init__() Actor.__init__(self) self.broker_host = broker_host self.rx_port = rx_port self.tx_port = tx_port self.context = zmq.Context() self.subscriber = self.context.socket(zmq.SUB) self.publisher = self.context.socket(zmq.PUB) self.broker_sub = self.context.socket(zmq.SUB) self.broker_pub = self.context.socket(zmq.PUB) self.broker_client_sub = self.context.socket(zmq.SUB) self.broker_client_pub = self.context.socket(zmq.PUB) self.proxy_client_sub = self.context.socket(zmq.SUB) self.proxy_client_pub = self.context.socket(zmq.PUB) self.subscriber.setsockopt(zmq.SUBSCRIBE, '') self.broker_sub.setsockopt(zmq.SUBSCRIBE, '') self.broker_client_sub.setsockopt(zmq.SUBSCRIBE, '') self.proxy_client_sub.setsockopt(zmq.SUBSCRIBE, '') gevent.spawn(self.broker_client_receiver) gevent.spawn(self.__receiver__) gevent.spawn(self.broker_receiver) gevent.spawn(self.proxy_client_receiver) # new actor will bind to a random port self.port = self.publisher.bind_to_random_port(addr="tcp://*") print "this actor's own publish port is: ", self.port # peers known so far self.known_publishers = ["tcp://%s:%d" % ("localhost", self.port)] if self.broker_host != "localhost": self.known_publishers.append("tcp://%s:%d" % (self.broker_host, self.tx_port)) self.introduction = "NOK" # not okay, introduce itself # is this address broker's server node in localhost? self.is_ab_server_node = False try: self.create_broker(watch=False) except: gevent.spawn(self.create_broker, watch=True) print "connecting to the local address broker" self.broker_client_pub.connect("tcp://%s:%d" % ("localhost", self.rx_port)) self.broker_client_sub.connect("tcp://%s:%d" % ("localhost", self.tx_port)) if self.broker_host != "localhost": print "connecting to the broker host" self.proxy_client_pub.connect("tcp://%s:%d" % (self.broker_host, self.rx_port)) self.proxy_client_sub.connect("tcp://%s:%d" % (self.broker_host, self.tx_port)) self.refresh_known_publishers()