Skip to content

Commit

Permalink
Merge pull request #162 from JdeRobot/issue-161
Browse files Browse the repository at this point in the history
Fixed Broken Pipe
  • Loading branch information
CDAM2020 authored Sep 11, 2024
2 parents 3e76188 + 1917e85 commit fd39152
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions manager/libs/applications/compatibility/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ def __init__(
self.server.set_fn_client_left(self.on_close)
self.server.set_fn_message_received(self.on_message)
self.current_client = None
self.client_lock = threading.Lock() # Used to avoid concurrency problems
self._stop = threading.Event()
LogManager.logger.info("Server Launched")

def run(self) -> None:
try:
self.server.run_forever()
if self._stop.isSet():
return
while not self._stop.is_set():
self.server.run_forever()
except Exception as ex:
LogManager.logger.exception(ex)

Expand All @@ -35,19 +35,23 @@ def stop(self) -> None:
self.server.shutdown_gracefully()

def send(self, data):
if self.current_client is not None:
self.server.send_message(self.current_client, data)
else:
LogManager.logger.error("No client is connected.")
with self.client_lock:
if self.current_client is not None:
self.server.send_message(self.current_client, data)

def on_message(self, client, server, message):
payload = json.loads(message)
self.update_callback(payload)
LogManager.logger.debug(f"Message received from template: {message[:30]}")


def on_close(self, client, server):
LogManager.logger.info("Connection with client closed")
with self.client_lock:
if client == self.current_client:
self.current_client = None

def on_open(self, client, server):
LogManager.logger.info(f"New client connected {client}")
self.current_client = client
with self.client_lock:
self.current_client = client

0 comments on commit fd39152

Please sign in to comment.