Skip to content

Commit c0bb177

Browse files
committed
Add option to use RelatesTo tag to recognize incoming messages
1 parent 91b1514 commit c0bb177

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

wsdiscovery/cmdline.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
@contextmanager
1717
def discovery(capture=None, unicast_num=UNICAST_UDP_REPEAT,
18-
multicast_num=MULTICAST_UDP_REPEAT):
18+
multicast_num=MULTICAST_UDP_REPEAT, relates_to=False):
1919
wsd = WSDiscovery(capture=capture, unicast_num=unicast_num,
20-
multicast_num=multicast_num)
20+
multicast_num=multicast_num, relates_to=relates_to)
2121
wsd.start()
2222
yield wsd
2323
wsd.stop()
@@ -54,13 +54,15 @@ def setup_logger(name, loglevel):
5454
show_default=True, help='Number of Unicast messages to send')
5555
@click.option('--multicast-num', '-mn', type=int, default=MULTICAST_UDP_REPEAT,
5656
show_default=True, help='Number of Multicast messages to send')
57+
@click.option('--relates-to', '-rt', is_flag=True,
58+
help='Also use RelatesTo tag to recognize incoming messages.')
5759
def discover(scope, address, port, loglevel, capture, timeout, unicast_num,
58-
multicast_num):
60+
multicast_num, relates_to):
5961
"Discover services using WS-Discovery"
6062

6163
logger = setup_logger("ws-discovery", loglevel)
6264

63-
with discovery(capture, unicast_num, multicast_num) as wsd:
65+
with discovery(capture, unicast_num, multicast_num, relates_to) as wsd:
6466
scopes = [Scope(scope)] if scope else []
6567
svcs = wsd.searchServices(scopes=scopes, address=address, port=port,
6668
timeout=timeout)

wsdiscovery/threaded.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def __init__(self, observer):
8282
self._iidMap = {}
8383
self._observer = observer
8484
self._capture = observer._capture
85+
self._relates_to = observer._relates_to
8586

8687
self._seqnum = 1 # capture sequence number
8788
self._selector = selectors.DefaultSelector()
@@ -219,7 +220,10 @@ def _recvMessages(self):
219220

220221
mid = env.getMessageId()
221222
if mid in self._knownMessageIds:
222-
continue # https://github.com/andreikop/python-ws-discovery/issues/38 # TODO
223+
if self._relates_to and env.getRelatesTo() in self._knownMessageIds:
224+
pass
225+
else:
226+
continue
223227
else:
224228
if self._capture:
225229
self._capture.write("NEW KNOWN MSG IDS %s\n" % (mid))
@@ -367,14 +371,16 @@ class ThreadedNetworking:
367371

368372
def __init__(self,
369373
unicast_num=UNICAST_UDP_REPEAT,
370-
multicast_num=MULTICAST_UDP_REPEAT, **kwargs):
374+
multicast_num=MULTICAST_UDP_REPEAT,
375+
relates_to=False, **kwargs):
371376
self._networkingThread_v4 = None
372377
self._networkingThread_v6 = None
373378
self._addrsMonitorThread_v4 = None
374379
self._addrsMonitorThread_v6 = None
375380
self._serverStarted = False
376381
self._unicast_num = unicast_num
377382
self._multicast_num = multicast_num
383+
self._relates_to = relates_to
378384
super().__init__(**kwargs)
379385

380386
def _startThreads(self):

0 commit comments

Comments
 (0)