Skip to content
Snippets Groups Projects
Commit ea573fcb authored by Jan David Mol's avatar Jan David Mol
Browse files

Merge branch 'L2SS-333-fix-commclient-connect' into 'master'

L2SS-333: Improve CommClient.connect signature

Closes L2SS-333

See merge request !95
parents 1c7d0d96 21f2d68e
Branches
No related tags found
1 merge request!95L2SS-333: Improve CommClient.connect signature
...@@ -63,9 +63,10 @@ class CommClient(AbstractCommClient, Thread): ...@@ -63,9 +63,10 @@ class CommClient(AbstractCommClient, Thread):
def connect(self): def connect(self):
""" """
Function used to connect to the client. Function used to connect to the client.
Throws an Exception if the connection cannot be established.
""" """
self.connected = True self.connected = True
return True
def disconnect(self): def disconnect(self):
""" """
...@@ -74,22 +75,15 @@ class CommClient(AbstractCommClient, Thread): ...@@ -74,22 +75,15 @@ class CommClient(AbstractCommClient, Thread):
self.connected = False self.connected = False
def run(self): def run(self):
# Explicitly connect
if not self.connect():
# hardware or infra is down -- needs fixing first
self.fault_func()
return
self.stopping = False self.stopping = False
while not self.stopping: while not self.stopping:
# keep trying to connect
if not self.connected: if not self.connected:
if self.connect(): # we (re)try only once, to catch exotic network issues. if the infra or hardware is down,
pass # our device cannot help, and must be reinitialised after the infra or hardware is fixed.
else: try:
# we retry only once, to catch exotic network issues. if the infra or hardware is down, self.connect()
# our device cannot help, and must be reinitialised after the infra or hardware is fixed. except Exception as e:
self.streams.error_stream("Fault condition in communication detected.", e)
self.fault_func() self.fault_func()
return return
......
...@@ -59,7 +59,6 @@ class OPCUAConnection(AsyncCommClient): ...@@ -59,7 +59,6 @@ class OPCUAConnection(AsyncCommClient):
try: try:
await self.client.connect() await self.client.connect()
self.connected = True
except (socket.error, IOError, OSError) as e: except (socket.error, IOError, OSError) as e:
raise IOError(f"Could not connect to OPC-UA server {self._servername()}") from e raise IOError(f"Could not connect to OPC-UA server {self._servername()}") from e
......
...@@ -22,10 +22,7 @@ class test_client(CommClient): ...@@ -22,10 +22,7 @@ class test_client(CommClient):
super().__init__(fault_func, streams, try_interval) super().__init__(fault_func, streams, try_interval)
# Explicitly connect # Explicitly connect
if not self.connect(): self.connect()
# hardware or infra is down -- needs fixing first
fault_func()
return
def connect(self): def connect(self):
""" """
...@@ -34,7 +31,6 @@ class test_client(CommClient): ...@@ -34,7 +31,6 @@ class test_client(CommClient):
self.streams.debug_stream("the example client doesn't actually connect to anything silly") self.streams.debug_stream("the example client doesn't actually connect to anything silly")
self.connected = True # set connected to true self.connected = True # set connected to true
return True # if succesfull, return true. otherwise return false
def disconnect(self): def disconnect(self):
self.connected = False # always force a reconnect, regardless of a successful disconnect self.connected = False # always force a reconnect, regardless of a successful disconnect
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment