Skip to content

Commit 374ca73

Browse files
authored
Solve transport close() as not inherited method. (#2098)
1 parent 27b2915 commit 374ca73

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

pymodbus/client/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ def register(self, custom_response_class: ModbusResponse) -> None:
124124
"""
125125
self.framer.decoder.register(custom_response_class)
126126

127-
def close(self, reconnect: bool = False, intern: bool = False) -> None: # type: ignore[override]
127+
def close(self, reconnect: bool = False) -> None:
128128
"""Close connection."""
129129
if reconnect:
130130
self.connection_lost(asyncio.TimeoutError("Server not responding"))
131131
else:
132-
super().close(intern)
132+
super().close()
133133

134134
def idle_time(self) -> float:
135135
"""Time before initiating next transaction (call **sync**).

pymodbus/client/serial.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ async def connect(self) -> bool:
101101
Log.debug("Connecting to {}.", self.comm_params.host)
102102
return await self.base_connect()
103103

104-
def close(self, reconnect: bool = False, intern: bool = False) -> None: # type: ignore[override]
104+
def close(self, reconnect: bool = False) -> None:
105105
"""Close connection."""
106-
super().close(reconnect=reconnect, intern=intern)
106+
super().close(reconnect=reconnect)
107107

108108

109109
class ModbusSerialClient(ModbusBaseSyncClient):

pymodbus/client/tcp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ async def connect(self) -> bool:
8787
)
8888
return await self.base_connect()
8989

90-
def close(self, reconnect: bool = False, intern: bool = False) -> None: # type: ignore[override]
90+
def close(self, reconnect: bool = False) -> None:
9191
"""Close connection."""
92-
super().close(reconnect=reconnect, intern=intern)
92+
super().close(reconnect=reconnect)
9393

9494

9595
class ModbusTcpClient(ModbusBaseSyncClient):

pymodbus/transport/transport.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ async def listen(self) -> bool:
260260
self.transport = self.transport[0]
261261
except OSError as exc:
262262
Log.warning("Failed to start server {}", exc)
263-
# self.close(intern=True)
263+
self.__close()
264264
return False
265265
return True
266266

@@ -285,7 +285,7 @@ def connection_lost(self, reason: Exception | None) -> None:
285285
if not self.transport or self.is_closing:
286286
return
287287
Log.debug("Connection lost {} due to {}", self.comm_params.comm_name, reason)
288-
self.close(intern=True)
288+
self.__close()
289289
if (
290290
not self.is_server
291291
and not self.listener
@@ -390,16 +390,11 @@ def send(self, data: bytes, addr: tuple | None = None) -> None:
390390
else:
391391
self.transport.write(data) # type: ignore[attr-defined]
392392

393-
def close(self, intern: bool = False, reconnect: bool = False) -> None:
394-
"""Close connection.
393+
def __close(self, reconnect: bool = False) -> None:
394+
"""Close connection (internal).
395395
396-
:param intern: (default false), True if called internally (temporary close)
397396
:param reconnect: (default false), try to reconnect
398397
"""
399-
if self.is_closing:
400-
return
401-
if not intern:
402-
self.is_closing = True
403398
if self.transport:
404399
self.transport.close()
405400
self.transport = None # type: ignore[assignment]
@@ -418,6 +413,16 @@ def close(self, intern: bool = False, reconnect: bool = False) -> None:
418413
if self.listener:
419414
self.listener.active_connections.pop(self.unique_id)
420415

416+
def close(self, reconnect: bool = False) -> None:
417+
"""Close connection (external).
418+
419+
:param reconnect: (default false), try to reconnect
420+
"""
421+
if self.is_closing:
422+
return
423+
self.is_closing = True
424+
self.__close(reconnect=reconnect)
425+
421426
def reset_delay(self) -> None:
422427
"""Reset wait time before next reconnect to minimal period."""
423428
self.reconnect_delay_current = self.comm_params.reconnect_delay or 0.0

0 commit comments

Comments
 (0)