mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 07:32:55 +00:00 
			
		
		
		
	@@ -6,11 +6,7 @@ LOG = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FSMAware:
 | 
			
		||||
    keys = ['fsm_update']
 | 
			
		||||
    """
 | 
			
		||||
    Base class for stuff that has to be aware of the framework FSM.
 | 
			
		||||
    This is done by processing 'fsm_update' messages.
 | 
			
		||||
    """
 | 
			
		||||
    keys = ['fsm.update']
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.fsm_state = None
 | 
			
		||||
        self.fsm_in_accepted_state = False
 | 
			
		||||
@@ -18,7 +14,7 @@ class FSMAware:
 | 
			
		||||
        self._auth_key = KeyManager().auth_key
 | 
			
		||||
 | 
			
		||||
    def process_message(self, message):
 | 
			
		||||
        if message['key'] == 'fsm_update':
 | 
			
		||||
        if message['key'] == 'fsm.update':
 | 
			
		||||
            if verify_message(self._auth_key, message):
 | 
			
		||||
                self._handle_fsm_update(message)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,6 @@ LOG = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
class ZMQDownlinkConnector:
 | 
			
		||||
    def __init__(self, connect_addr):
 | 
			
		||||
        self.keys = []
 | 
			
		||||
        self._on_recv_callback = None
 | 
			
		||||
        self._zmq_sub_socket = zmq.Context.instance().socket(zmq.SUB)
 | 
			
		||||
        self._zmq_sub_socket.setsockopt(zmq.RCVHWM, 0)
 | 
			
		||||
        self._zmq_sub_socket.connect(connect_addr)
 | 
			
		||||
@@ -25,19 +23,14 @@ class ZMQDownlinkConnector:
 | 
			
		||||
    def subscribe(self, *keys):
 | 
			
		||||
        for key in keys:
 | 
			
		||||
            self._zmq_sub_socket.setsockopt_string(zmq.SUBSCRIBE, key)
 | 
			
		||||
            self.keys.append(key)
 | 
			
		||||
 | 
			
		||||
    def unsubscribe(self, *keys):
 | 
			
		||||
        for key in keys:
 | 
			
		||||
            self._zmq_sub_socket.setsockopt_string(zmq.UNSUBSCRIBE, key)
 | 
			
		||||
            self.keys.remove(key)
 | 
			
		||||
 | 
			
		||||
    def register_callback(self, callback):
 | 
			
		||||
        if callback:
 | 
			
		||||
            self._on_recv_callback = callback
 | 
			
		||||
            self._zmq_sub_stream.on_recv(with_deserialize_tfw_msg(self._on_recv))
 | 
			
		||||
        else:
 | 
			
		||||
            self._zmq_sub_stream.on_recv(None)
 | 
			
		||||
        callback = with_deserialize_tfw_msg(callback) if callback else None
 | 
			
		||||
        self._zmq_sub_stream.on_recv(callback)
 | 
			
		||||
 | 
			
		||||
    def recv_message(self, *, block=True):
 | 
			
		||||
        if self._zmq_sub_stream.receiving():
 | 
			
		||||
@@ -48,11 +41,6 @@ class ZMQDownlinkConnector:
 | 
			
		||||
        except zmq.ZMQError:
 | 
			
		||||
            raise IOError("No data available to recv!")
 | 
			
		||||
 | 
			
		||||
    def _on_recv(self, message):
 | 
			
		||||
        key = message['key']
 | 
			
		||||
        if key in self.keys or '' in self.keys:
 | 
			
		||||
            self._on_recv_callback(message)
 | 
			
		||||
 | 
			
		||||
    def close(self):
 | 
			
		||||
        self._zmq_sub_stream.close()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user