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()
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)
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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()
Exemplo n.º 6
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.º 7
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()