|
13 | 13 | from .message import createSOAPMessage, parseSOAPMessage |
14 | 14 | from .udp import UDPMessage |
15 | 15 | from .util import _getNetworkAddrs, dom2Str |
16 | | - |
17 | | -logger = logging.getLogger("threading") |
| 16 | +from .udp import UNICAST_UDP_REPEAT, MULTICAST_UDP_REPEAT |
18 | 17 |
|
19 | 18 | BUFFER_SIZE = 0xffff |
20 | 19 | NETWORK_ADDRESSES_CHECK_TIMEOUT = 5 |
21 | 20 | MULTICAST_PORT = 3702 |
22 | 21 | MULTICAST_IPV4_ADDRESS = "239.255.255.250" |
23 | 22 | MULTICAST_IPV6_ADDRESS = "FF02::C" |
24 | 23 |
|
| 24 | +logger = logging.getLogger("threading") |
| 25 | + |
25 | 26 |
|
26 | 27 | class _StoppableDaemonThread(threading.Thread): |
27 | 28 | """Stoppable daemon thread. |
@@ -157,14 +158,18 @@ def removeSourceAddr(self, addr): |
157 | 158 | sock.close() |
158 | 159 | del self._multiOutUniInSockets[addr] |
159 | 160 |
|
160 | | - def addUnicastMessage(self, env, addr, port, initialDelay=0): |
161 | | - msg = UDPMessage(env, addr, port, UDPMessage.UNICAST, initialDelay) |
| 161 | + def addUnicastMessage(self, env, addr, port, initialDelay=0, |
| 162 | + unicast_num=UNICAST_UDP_REPEAT): |
| 163 | + msg = UDPMessage(env, addr, port, UDPMessage.UNICAST, initialDelay, |
| 164 | + unicast_num=unicast_num) |
162 | 165 |
|
163 | 166 | self._queue.append(msg) |
164 | 167 | self._knownMessageIds.add(env.getMessageId()) |
165 | 168 |
|
166 | | - def addMulticastMessage(self, env, addr, port, initialDelay=0): |
167 | | - msg = UDPMessage(env, addr, port, UDPMessage.MULTICAST, initialDelay) |
| 169 | + def addMulticastMessage(self, env, addr, port, initialDelay=0, |
| 170 | + multicast_num=MULTICAST_UDP_REPEAT): |
| 171 | + msg = UDPMessage(env, addr, port, UDPMessage.MULTICAST, initialDelay, |
| 172 | + multicast_num=multicast_num) |
168 | 173 |
|
169 | 174 | self._queue.append(msg) |
170 | 175 | self._knownMessageIds.add(env.getMessageId()) |
@@ -358,12 +363,16 @@ def _get_multicast_ttl(self): |
358 | 363 | class ThreadedNetworking: |
359 | 364 | "handle threaded networking start & stop, address add/remove & message sending" |
360 | 365 |
|
361 | | - def __init__(self, **kwargs): |
| 366 | + def __init__(self, |
| 367 | + unicast_num=UNICAST_UDP_REPEAT, |
| 368 | + multicast_num=MULTICAST_UDP_REPEAT, **kwargs): |
362 | 369 | self._networkingThread_v4 = None |
363 | 370 | self._networkingThread_v6 = None |
364 | 371 | self._addrsMonitorThread_v4 = None |
365 | 372 | self._addrsMonitorThread_v6 = None |
366 | 373 | self._serverStarted = False |
| 374 | + self._unicast_num = unicast_num |
| 375 | + self._multicast_num = multicast_num |
367 | 376 | super().__init__(**kwargs) |
368 | 377 |
|
369 | 378 | def _startThreads(self): |
@@ -423,12 +432,24 @@ def removeSourceAddr(self, addr): |
423 | 432 | elif version == 6: |
424 | 433 | self._networkingThread_v6.removeSourceAddr(addr) |
425 | 434 |
|
426 | | - def sendUnicastMessage(self, env, host, port, initialDelay=0): |
| 435 | + def sendUnicastMessage(self, env, host, port, initialDelay=0, |
| 436 | + unicast_num=UNICAST_UDP_REPEAT): |
427 | 437 | "handle unicast message sending" |
428 | | - self._networkingThread_v4.addUnicastMessage(env, host, port, initialDelay) |
429 | | - self._networkingThread_v6.addUnicastMessage(env, host, port, initialDelay) |
| 438 | + self._networkingThread_v4.addUnicastMessage(env, host, port, |
| 439 | + initialDelay, unicast_num) |
| 440 | + self._networkingThread_v6.addUnicastMessage(env, host, port, |
| 441 | + initialDelay, unicast_num) |
430 | 442 |
|
431 | | - def sendMulticastMessage(self, env, initialDelay=0): |
| 443 | + def sendMulticastMessage(self, env, initialDelay=0, |
| 444 | + multicast_num=MULTICAST_UDP_REPEAT): |
432 | 445 | "handle multicast message sending" |
433 | | - self._networkingThread_v4.addMulticastMessage(env, MULTICAST_IPV4_ADDRESS, MULTICAST_PORT, initialDelay) |
434 | | - self._networkingThread_v6.addMulticastMessage(env, MULTICAST_IPV6_ADDRESS, MULTICAST_PORT, initialDelay) |
| 446 | + self._networkingThread_v4.addMulticastMessage(env, |
| 447 | + MULTICAST_IPV4_ADDRESS, |
| 448 | + MULTICAST_PORT, |
| 449 | + initialDelay, |
| 450 | + multicast_num) |
| 451 | + self._networkingThread_v6.addMulticastMessage(env, |
| 452 | + MULTICAST_IPV6_ADDRESS, |
| 453 | + MULTICAST_PORT, |
| 454 | + initialDelay, |
| 455 | + multicast_num) |
0 commit comments