Ejemplo n.º 1
0
    def run(self):
        try:
            context = zmq.Context()
            sub_layer = context.socket(zmq.SUB)
            pub_host = self.__pub_addr[0]
            pub_port = self.__pub_addr[1]
            sub_layer.bind('tcp://%s:%d' % (pub_host, pub_port))
            sub_layer.setsockopt(zmq.SUBSCRIBE, b'')
            self.__log('setting up subscribing layer to services on {}'.format(
                self.__pub_addr))
            logger.info(
                'setting up subscribing layer to services on {}'.format(
                    self.__pub_addr))

            pub_layer = context.socket(zmq.PUB)

            sub_host = self.__sub_addr[0]
            sub_port = self.__sub_addr[1]
            pub_layer.bind('tcp://%s:%d' % (sub_host, sub_port))
            self.__log('setting up publishing layer to listeners on {}'.format(
                self.__sub_addr))
            logger.info(
                'setting up publishing layer to listeners on {}'.format(
                    self.__sub_addr))

            zmq.device(zmq.FORWARDER, sub_layer, pub_layer)
        except Exception as e:
            # TODO: send error to interface
            self.__log('error')
            print(e)
Ejemplo n.º 2
0
def disconnect():
    """
    Terminates system and device layer forwarders.
    """
    logger.info('browser client disconnected')
    if SystemForwarderTopic.FORWARDER in forwarders.keys():
        system_forwarder = forwarders.get(SystemForwarderTopic.FORWARDER)
        system_forwarder.running = False
        system_forwarder.terminate()
        system_forwarder.join()
        forwarders.pop(SystemForwarderTopic.FORWARDER)

    if DeviceForwarderTopic.FORWARDER in forwarders.keys():
        device_forwarder = forwarders.get(DeviceForwarderTopic.FORWARDER)
        device_forwarder.running = False
        device_forwarder.terminate()
        device_forwarder.join()
        forwarders.pop(DeviceForwarderTopic.FORWARDER)

    if DeviceForwarderTopic.FORWARDER_INTERNAL in devices.keys():
        internal_forwarder = devices.get(
            DeviceForwarderTopic.FORWARDER_INTERNAL)
        internal_forwarder.running = False
        internal_forwarder.terminate()
        internal_forwarder.join()
        devices.pop(DeviceForwarderTopic.FORWARDER_INTERNAL)
Ejemplo n.º 3
0
def connect():
    """
    Configures and initializes system and device layer forwarders.
    """
    logger.info('browser client connected')
    system_forwarder = Forwarder(topic=SystemForwarderTopic.FORWARDER,
                                 pub_addr=InternalAddress.SYSTEM_PUB,
                                 sub_addr=InternalAddress.SYSTEM_SUB)

    device_forwarder = Forwarder(topic=DeviceForwarderTopic.FORWARDER,
                                 pub_addr=InternalAddress.DEVICE_PUB,
                                 sub_addr=InternalAddress.DEVICE_SUB)

    internal_forwarder = Forwarder(
        topic=DeviceForwarderTopic.FORWARDER_INTERNAL,
        pub_addr=('127.0.0.1', 8100),
        sub_addr=('127.0.0.1', 8101))

    internal_forwarder.running = True
    if DeviceForwarderTopic.FORWARDER_INTERNAL not in forwarders.keys():
        forwarders[
            DeviceForwarderTopic.FORWARDER_INTERNAL] = internal_forwarder
        forwarders.get(DeviceForwarderTopic.FORWARDER_INTERNAL).start()

    system_forwarder.running = True
    if SystemForwarderTopic.FORWARDER not in forwarders.keys():
        forwarders[SystemForwarderTopic.FORWARDER] = system_forwarder
        forwarders.get(SystemForwarderTopic.FORWARDER).start()

    device_forwarder.running = True
    if DeviceForwarderTopic.FORWARDER not in forwarders.keys():
        forwarders[DeviceForwarderTopic.FORWARDER] = device_forwarder
        forwarders.get(DeviceForwarderTopic.FORWARDER).start()
Ejemplo n.º 4
0
def create_app():
    app = Flask(__name__, static_folder='static', template_folder='templates')
    app.config['SECRET_KEY'] = 'secret!'
    app.threaded = True
    logger.info('initializing flask websocket app')
    return app
Ejemplo n.º 5
0
def get_help_view():
    logger.info('redirecting to help page')
    return render_template('help.html')
Ejemplo n.º 6
0
def get_home_view():
    logger.info('redirecting to home page')
    return render_template('home.html')