11"""Proxy for sending messages between the Gateway and an add-on."""
22
33from nnpy .errors import NNError
4+ import functools
45import json
56import threading
67
78from .ipc import IpcClient
89
10+ print = functools .partial (print , flush = True )
11+
912
1013class AddonManagerProxy :
1114 """
@@ -48,7 +51,7 @@ def add_adapter(self, adapter):
4851 adapter -- the Adapter that was added
4952 """
5053 if self .verbose :
51- print ('AddonManagerProxy: add_adapter:' , adapter .id , flush = True )
54+ print ('AddonManagerProxy: add_adapter:' , adapter .id )
5255
5356 self .adapter = adapter
5457 self .send ('addAdapter' , {
@@ -64,8 +67,7 @@ def handle_device_added(self, device):
6467 device -- the Device that was added
6568 """
6669 if self .verbose :
67- print ('AddonManagerProxy: handle_device_added:' , device .id ,
68- flush = True )
70+ print ('AddonManagerProxy: handle_device_added:' , device .id )
6971
7072 device_dict = device .as_dict ()
7173 device_dict ['adapterId' ] = device .adapter .id
@@ -78,8 +80,7 @@ def handle_device_removed(self, device):
7880 device -- the Device that was removed
7981 """
8082 if self .verbose :
81- print ('AddonManagerProxy: handle_device_removed:' , device .id ,
82- flush = True )
83+ print ('AddonManagerProxy: handle_device_removed:' , device .id )
8384
8485 self .send ('handleDeviceRemoved' , {
8586 'adapterId' : device .adapter .id ,
@@ -116,8 +117,7 @@ def send(self, msg_type, data):
116117 'data' : data ,
117118 }))
118119 except NNError as e :
119- print ('AddonManagerProxy: Failed to send message: {}' .format (e ),
120- flush = True )
120+ print ('AddonManagerProxy: Failed to send message: {}' .format (e ))
121121
122122 def recv (self ):
123123 """Read a message from the IPC socket."""
@@ -126,29 +126,28 @@ def recv(self):
126126 msg = self .ipc_client .plugin_socket .recv ()
127127 except NNError as e :
128128 print ('AddonManagerProxy: Error receiving message from '
129- 'socket: {}' .format (e ), flush = True )
129+ 'socket: {}' .format (e ))
130130 break
131131
132132 if self .verbose :
133- print ('AddonMangerProxy: recv:' , msg , flush = True )
133+ print ('AddonMangerProxy: recv:' , msg )
134134
135135 if not msg :
136136 break
137137
138138 if not self .adapter :
139139 print ('AddonManagerProxy: No adapter added yet, ignoring '
140- 'message.' , flush = True )
140+ 'message.' )
141141 continue
142142
143143 try :
144144 msg = json .loads (msg )
145145 except ValueError :
146- print ('AddonManagerProxy: Error parsing message as JSON' ,
147- flush = True )
146+ print ('AddonManagerProxy: Error parsing message as JSON' )
148147 continue
149148
150149 if 'messageType' not in msg :
151- print ('AddonManagerProxy: Invalid message' , flush = True )
150+ print ('AddonManagerProxy: Invalid message' )
152151 continue
153152
154153 msg_type = msg ['messageType' ]
@@ -180,7 +179,7 @@ def unload_fn(proxy):
180179 # All messages from here on are assumed to require a valid deviceId
181180 if 'data' not in msg or 'deviceId' not in msg ['data' ]:
182181 print ('AddonManagerProxy: No deviceId present in message, '
183- 'ignoring.' , flush = True )
182+ 'ignoring.' )
184183 continue
185184
186185 device_id = msg ['data' ]['deviceId' ]
@@ -206,6 +205,12 @@ def set_prop_fn(proxy):
206205
207206 @staticmethod
208207 def make_thread (target , args = ()):
208+ """
209+ Start up a thread in the background.
210+
211+ target -- the target function
212+ args -- arguments to pass to target
213+ """
209214 t = threading .Thread (target = target , args = args )
210215 t .daemon = True
211216 t .start ()
0 commit comments