Use prefix matching in ZMQConnector

This commit is contained in:
Kristóf Tóth
2019-08-08 15:05:37 +02:00
parent 35e5b595d1
commit b5e53cb946
Notes: R. Richard 2019-09-04 21:27:26 +02:00
- Control/Signed/FSMAwareEventHandler unit tesztek
- command_handler dict automatikus generálása
- frontend keyup ne hallgasson már a nyilakra meg ilyenekre
- CommandEventHandler humble object + tesztek
- terminalba írás ideiglenes letiltása
- ha nem kell egy komponens ki lehessen venni
- pipe, ami aláírja az üzenetet, amit beleküldünk
- legyen pötyögtetés a message queue elején
- a queue thread-jét lehessen join-olni várakozás közben is
- PipeConnector nyissa meg a már előtte is létező pipe-okat
9 changed files with 62 additions and 65 deletions

View File

@ -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()