Skip to content

Commit 9290e6a

Browse files
authored
Merge pull request #75 from wpyoga/use-relatesto
Add option to use RelatesTo tag to recognize incoming messages
2 parents cbb02f7 + c0bb177 commit 9290e6a

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
@@ -18,9 +18,9 @@
1818

1919
@contextmanager
2020
def discovery(capture=None, unicast_num=UNICAST_UDP_REPEAT,
21-
multicast_num=MULTICAST_UDP_REPEAT):
21+
multicast_num=MULTICAST_UDP_REPEAT, relates_to=False):
2222
wsd = WSDiscovery(capture=capture, unicast_num=unicast_num,
23-
multicast_num=multicast_num)
23+
multicast_num=multicast_num, relates_to=relates_to)
2424
wsd.start()
2525
yield wsd
2626
wsd.stop()
@@ -57,13 +57,15 @@ def setup_logger(name, loglevel):
5757
show_default=True, help='Number of Unicast messages to send')
5858
@click.option('--multicast-num', '-mn', type=int, default=MULTICAST_UDP_REPEAT,
5959
show_default=True, help='Number of Multicast messages to send')
60+
@click.option('--relates-to', '-rt', is_flag=True,
61+
help='Also use RelatesTo tag to recognize incoming messages.')
6062
def discover(scope, address, port, loglevel, capture, timeout, unicast_num,
61-
multicast_num):
63+
multicast_num, relates_to):
6264
"Discover services using WS-Discovery"
6365

6466
logger = setup_logger("ws-discovery", loglevel)
6567

66-
with discovery(capture, unicast_num, multicast_num) as wsd:
68+
with discovery(capture, unicast_num, multicast_num, relates_to) as wsd:
6769
scopes = [Scope(scope)] if scope else []
6870
svcs = wsd.searchServices(scopes=scopes, address=address, port=port,
6971
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)