Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()