Skip to content

Commit bf0bc1c

Browse files
authored
Adjusting sync modbus server to accept custom ModusRequestHandler like the async server (#699)
1 parent 1c23e45 commit bf0bc1c

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

pymodbus/server/sync.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,8 @@ def __init__(self, context, framer=None, identity=None, **kwargs):
541541
self.socket = None
542542
if self._connect():
543543
self.is_running = True
544-
self._build_handler()
544+
self._build_handler(kwargs.get('handler',
545+
CustomSingleRequestHandler))
545546

546547
def _connect(self):
547548
""" Connect to the serial server
@@ -560,19 +561,19 @@ def _connect(self):
560561
_logger.error(msg)
561562
return self.socket is not None
562563

563-
def _build_handler(self):
564+
def _build_handler(self, handler):
564565
""" A helper method to create and monkeypatch
565566
a serial handler.
567+
:param handler: a custom handler, uses ModbusSingleRequestHandler if set to None
566568
567569
:returns: A patched handler
568570
"""
569-
570571
request = self.socket
571572
request.send = request.write
572573
request.recv = request.read
573-
self.handler = CustomSingleRequestHandler(request,
574-
(self.device, self.device),
575-
self)
574+
self.handler = handler(request,
575+
(self.device, self.device),
576+
self)
576577

577578
def serve_forever(self):
578579
""" Callback for connecting a new client thread

0 commit comments

Comments
 (0)