class MirrorStreamer(Thread): """Act as a relay... """ def __init__(self, holder, configfile): Thread.__init__(self) self.scanlines = holder cfg = ConfigParser() cfg.read(configfile) host = cfg.get("local_reception", "mirror") hostname = cfg.get(host, "hostname") port = cfg.get(host, "pubport") rport = cfg.get(host, "reqport") address = "tcp://" + hostname + ":" + port self._sub = Subscriber([address], "hrpt 0") self._reqaddr = "tcp://" + hostname + ":" + rport def run(self): for message in self._sub.recv(1): if message is None: continue if(message.type == "have"): logger.debug("Relaying " + str(message.data["timecode"])) self.scanlines.add_scanline(message.data["satellite"], strp_isoformat(message.data["timecode"]), message.data["elevation"], None, self._reqaddr) def stop(self): """Stop streaming. """ self._sub.stop()
class Listener(object): '''PyTroll listener class for reading messages and adding them to deque ''' def __init__(self, ip=None, port=None, processes=2, pipe=None): ''' ''' self.address_list = [] self.type_list = [] self.add_address(ip, port) self.deque = deque() self.pipe = pipe self.create_subscriber() def add_address(self, ip, port): ''' ''' if ip is not None and port is not None: self.address_list.append('tcp://'+ip+':%05d' % port) def add_address_list(self, address_list): ''' ''' for address in address_list: self.address_list.append(address) def create_subscriber(self): ''' ''' if len(self.address_list) > 0: self.subscriber = Subscriber(self.address_list, self.type_list) def send_to_pipe(self, msg): ''' ''' self.pipe.send(msg) def start(self): ''' ''' print "start" for msg in self.subscriber.recv(): print "new msg" if self.pipe is None: self.deque.append(msg) else: while len(self.deque) > 0: self.send_to_pipe(self.deque.popleft()) self.send_to_pipe(msg)
class Listener(object): '''PyTroll listener class for reading messages and adding them to deque ''' def __init__(self, ip=None, port=None, processes=2, pipe=None): ''' ''' self.address_list = [] self.type_list = [] self.add_address(ip, port) self.deque = deque() self.pipe = pipe self.create_subscriber() def add_address(self, ip, port): ''' ''' if ip is not None and port is not None: self.address_list.append('tcp://' + ip + ':%05d' % port) def add_address_list(self, address_list): ''' ''' for address in address_list: self.address_list.append(address) def create_subscriber(self): ''' ''' if len(self.address_list) > 0: self.subscriber = Subscriber(self.address_list, self.type_list) def send_to_pipe(self, msg): ''' ''' self.pipe.send(msg) def start(self): ''' ''' print "start" for msg in self.subscriber.recv(): print "new msg" if self.pipe is None: self.deque.append(msg) else: while len(self.deque) > 0: self.send_to_pipe(self.deque.popleft()) self.send_to_pipe(msg)
def test_pub_suber(self): """Test publisher and subscriber. """ pub_address = "tcp://" + str(get_own_ip()) + ":0" pub = Publisher(pub_address) addr = pub_address[:-1] + str(pub.port_number) sub = Subscriber([addr], '/counter') tested = False for counter in range(5): message = Message("/counter", "info", str(counter)) pub.send(str(message)) time.sleep(1) msg = sub.recv(2).next() if msg is not None: self.assertEquals(str(msg), str(message)) tested = True self.assertTrue(tested) pub.stop()
class Listener(object): '''PyTroll listener class for reading messages for Trollduction ''' def __init__(self, address_list=None, msg_type_list=None, ip=None, port=None, pipe=None): '''Init Listener object ''' self.address_list = [] self.add_address_list(address_list) self.add_address(ip, port) self.msg_type_list = [] if msg_type_list is not None: self.msg_type_list = msg_type_list self.deque = deque() self.pipe = pipe self.subscriber = None self.create_subscriber() self.running = False def add_address(self, ip, port): '''Add address that will be listened ''' if ip is not None and port is not None: self.address_list.append('tcp://'+ip+':%04d' % port) def add_address_list(self, address_list): '''Add a list of addresses that will be listened ''' for address in address_list: self.address_list.append(address) def create_subscriber(self): '''Create a subscriber instance using specified addresses and message types. ''' if self.subscriber is None: if len(self.address_list) > 0: if len(self.msg_type_list) > 0: self.subscriber = Subscriber(self.address_list, *self.msg_type_list) def send_to_pipe(self, msg): '''Send message to parent via a Pipe() ''' self.pipe.send(msg) def run(self): '''Run listener ''' # TODO: add logging print "Starting Listener" self.running = True for msg in self.subscriber.recv(): print "New message received" if msg.subject == '/stop_listener': break if self.pipe is None: self.deque.append(msg) else: while len(self.deque) > 0: self.send_to_pipe(self.deque.popleft()) self.send_to_pipe(msg) def stop(self): '''Stop subscriber and delete the instance ''' # TODO: add logging self.subscriber.stop() self.subscriber.close() self.subscriber = None self.running = False def restart(self): '''Restart subscriber ''' self.stop() self.create_subscriber() self.run()
class Listener(object): '''PyTroll listener class for reading messages for Trollduction ''' def __init__(self, address_list=None, msg_type_list=None, ip=None, port=None, pipe=None): '''Init Listener object ''' self.address_list = [] self.add_address_list(address_list) self.add_address(ip, port) self.msg_type_list = [] if msg_type_list is not None: self.msg_type_list = msg_type_list self.deque = deque() self.pipe = pipe self.subscriber = None self.create_subscriber() self.running = False def add_address(self, ip, port): '''Add address that will be listened ''' if ip is not None and port is not None: self.address_list.append('tcp://' + ip + ':%04d' % port) def add_address_list(self, address_list): '''Add a list of addresses that will be listened ''' for address in address_list: self.address_list.append(address) def create_subscriber(self): '''Create a subscriber instance using specified addresses and message types. ''' if self.subscriber is None: if len(self.address_list) > 0: if len(self.msg_type_list) > 0: self.subscriber = Subscriber(self.address_list, *self.msg_type_list) def send_to_pipe(self, msg): '''Send message to parent via a Pipe() ''' self.pipe.send(msg) def run(self): '''Run listener ''' # TODO: add logging print "Starting Listener" self.running = True for msg in self.subscriber.recv(): print "New message received" if msg.subject == '/stop_listener': break if self.pipe is None: self.deque.append(msg) else: while len(self.deque) > 0: self.send_to_pipe(self.deque.popleft()) self.send_to_pipe(msg) def stop(self): '''Stop subscriber and delete the instance ''' # TODO: add logging self.subscriber.stop() self.subscriber.close() self.subscriber = None self.running = False def restart(self): '''Restart subscriber ''' self.stop() self.create_subscriber() self.run()