Skip to content
Snippets Groups Projects
Commit ee15f79a authored by Alexandre MALFREYT's avatar Alexandre MALFREYT
Browse files

Fix FAULT on Init if already connected to socket (socket closure handling in delete_device)

parent f4c6cbb6
No related branches found
No related tags found
No related merge requests found
...@@ -42,6 +42,7 @@ __all__ = ["GEpressCtrlPACE5000", "GEpressCtrlPACE5000Class", "main"] ...@@ -42,6 +42,7 @@ __all__ = ["GEpressCtrlPACE5000", "GEpressCtrlPACE5000Class", "main"]
__docformat__ = 'restructuredtext' __docformat__ = 'restructuredtext'
import time
import PyTango import PyTango
import sys import sys
# Add additional import # Add additional import
...@@ -81,9 +82,31 @@ class GEpressCtrlPACE5000 (PyTango.LatestDeviceImpl): ...@@ -81,9 +82,31 @@ class GEpressCtrlPACE5000 (PyTango.LatestDeviceImpl):
def delete_device(self): def delete_device(self):
self.debug_stream("In delete_device()") self.debug_stream("In delete_device()")
#----- PROTECTED REGION ID(GEpressCtrlPACE5000.delete_device) ENABLED START -----# #----- PROTECTED REGION ID(GEpressCtrlPACE5000.delete_device) ENABLED START -----#
self.info_stream("Closing socket connection") self.info_stream("Closing socket connection")
# Close the socket connection if it exists
if hasattr(self, 'socket') and self.socket:
try:
self.socket.close() self.socket.close()
except Exception as e:
self.error_stream("Error closing socket: " + str(e))
# Check if the socket is closed (doesn't usually close immediately)
max_tries = 5
sleep_time = 0.2
closed = False
for _ in range(max_tries):
if not hasattr(self, 'socket') or self.socket is None:
closed = True
break
time.sleep(sleep_time)
if not closed:
self.error_stream("Socket connection could not be closed after " + str(max_tries) + " tries")
self.set_state(PyTango.DevState.FAULT)
self.set_status("Socket connection could not be closed")
else:
self.info_stream("Socket connection closed successfully")
#----- PROTECTED REGION END -----# // GEpressCtrlPACE5000.delete_device #----- PROTECTED REGION END -----# // GEpressCtrlPACE5000.delete_device
......
...@@ -85,7 +85,6 @@ class GEpressCtrlPACE5000Channel (PyTango.LatestDeviceImpl): ...@@ -85,7 +85,6 @@ class GEpressCtrlPACE5000Channel (PyTango.LatestDeviceImpl):
self.info_stream("Deleting channel " + self.get_name()) self.info_stream("Deleting channel " + self.get_name())
self.set_state(PyTango.DevState.OFF) self.set_state(PyTango.DevState.OFF)
self.socket.close()
#----- PROTECTED REGION END -----# // GEpressCtrlPACE5000Channel.delete_device #----- PROTECTED REGION END -----# // GEpressCtrlPACE5000Channel.delete_device
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment