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)
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)
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()
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
def get_help_view(): logger.info('redirecting to help page') return render_template('help.html')
def get_home_view(): logger.info('redirecting to home page') return render_template('home.html')