Skip to content

Commit da085e9

Browse files
author
Mike Stegeman
committed
Handle socket errors properly.
1 parent ed44890 commit da085e9

File tree

3 files changed

+41
-13
lines changed

3 files changed

+41
-13
lines changed

gateway_addon/adapter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ def __init__(self, _id, package_name, verbose=False):
3434
verbose=verbose)
3535
self.manager_proxy.add_adapter(self)
3636

37+
def close_proxy(self):
38+
"""Close the manager proxy."""
39+
self.manager_proxy.close()
40+
3741
def dump(self):
3842
"""Dump the state of the adapter to the log."""
3943
print('Adapter:', self.name, '- dump() not implemented')

gateway_addon/addon_manager_proxy.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Proxy for sending messages between the Gateway and an add-on."""
22

3+
from nnpy.errors import NNError
34
import json
45
import threading
56

@@ -26,12 +27,17 @@ def __init__(self, socket, plugin_id, verbose=False):
2627
self.verbose = verbose
2728
self.running = True
2829
self.thread = threading.Thread(target=self.recv)
30+
self.thread.daemon = True
2931
self.thread.start()
3032

3133
def close(self):
3234
"""Close the proxy."""
3335
self.running = False
34-
self.socket.close()
36+
37+
try:
38+
self.socket.close()
39+
except NNError:
40+
pass
3541

3642
def add_adapter(self, adapter):
3743
"""
@@ -99,15 +105,23 @@ def send(self, msg_type, data):
99105

100106
data['pluginId'] = self.plugin_id
101107

102-
self.socket.send(json.dumps({
103-
'messageType': msg_type,
104-
'data': data,
105-
}))
108+
try:
109+
self.socket.send(json.dumps({
110+
'messageType': msg_type,
111+
'data': data,
112+
}))
113+
except NNError as e:
114+
print('AddonManagerProxy: Failed to send message: {}'.format(e))
106115

107116
def recv(self):
108117
"""Read a message from the IPC socket."""
109118
while self.running:
110-
msg = self.socket.recv()
119+
try:
120+
msg = self.socket.recv()
121+
except NNError as e:
122+
print('AddonManagerProxy: Error receiving message from '
123+
'socket: {}'.format(e))
124+
break
111125

112126
if self.verbose:
113127
print('AddonMangerProxy: recv:', msg)

gateway_addon/ipc.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""IPC client to communicate with the Gateway."""
22

3+
from nnpy.errors import NNError
34
import json
45
import nnpy
56

@@ -24,14 +25,23 @@ def __init__(self, plugin_id, verbose=False):
2425
if verbose:
2526
print('IpcClient: Connected to server, registering...')
2627

27-
self.manager_socket.send(json.dumps({
28-
'messageType': 'registerPlugin',
29-
'data': {
30-
'pluginId': plugin_id,
31-
}
32-
}))
28+
try:
29+
self.manager_socket.send(json.dumps({
30+
'messageType': 'registerPlugin',
31+
'data': {
32+
'pluginId': plugin_id,
33+
}
34+
}))
35+
except NNError as e:
36+
print('IpcClient: Failed to send message: {}'.format(e))
37+
return
38+
39+
try:
40+
resp = self.manager_socket.recv()
41+
except NNError as e:
42+
print('IpcClient: Error receiving message: {}'.format(e))
43+
return
3344

34-
resp = self.manager_socket.recv()
3545
if verbose:
3646
print('IpcClient: Received manager message:', resp)
3747

0 commit comments

Comments
 (0)