Skip to content

Commit f50bc26

Browse files
author
Mike Stegeman
committed
Simplify stdout flushing.
1 parent 6816c89 commit f50bc26

File tree

3 files changed

+39
-33
lines changed

3 files changed

+39
-33
lines changed

gateway_addon/adapter.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
"""High-level Adapter base class implementation."""
22

3+
import functools
4+
35
from .addon_manager_proxy import AddonManagerProxy
46

57

8+
print = functools.partial(print, flush=True)
9+
10+
611
class Adapter:
712
"""An Adapter represents a way of communicating with a set of devices."""
813

@@ -40,7 +45,7 @@ def close_proxy(self):
4045

4146
def dump(self):
4247
"""Dump the state of the adapter to the log."""
43-
print('Adapter:', self.name, '- dump() not implemented', flush=True)
48+
print('Adapter:', self.name, '- dump() not implemented')
4449

4550
def get_id(self):
4651
"""
@@ -130,13 +135,11 @@ def start_pairing(self, timeout):
130135
131136
timeout -- Timeout in seconds at which to quit pairing
132137
"""
133-
print('Adapter:', self.name, 'id', self.id, 'pairing started',
134-
flush=True)
138+
print('Adapter:', self.name, 'id', self.id, 'pairing started')
135139

136140
def cancel_pairing(self):
137141
"""Cancel the pairing process."""
138-
print('Adapter:', self.name, 'id', self.id, 'pairing cancelled',
139-
flush=True)
142+
print('Adapter:', self.name, 'id', self.id, 'pairing cancelled')
140143

141144
def remove_thing(self, device_id):
142145
"""
@@ -147,8 +150,7 @@ def remove_thing(self, device_id):
147150
device = self.get_device(device_id)
148151
if device:
149152
print('Adapter:', self.name, 'id', self.id,
150-
'remove_thing(' + device.id + ')',
151-
flush=True)
153+
'remove_thing(' + device.id + ')')
152154

153155
def cancel_remove_thing(self, device_id):
154156
"""
@@ -159,9 +161,8 @@ def cancel_remove_thing(self, device_id):
159161
device = self.get_device(device_id)
160162
if device:
161163
print('Adapter:', self.name, 'id', self.id,
162-
'cancel_remove_thing(' + device.id + ')',
163-
flush=True)
164+
'cancel_remove_thing(' + device.id + ')')
164165

165166
def unload(self):
166167
"""Perform any necessary cleanup before adapter is shut down."""
167-
print('Adapter:', self.name, 'unloaded', flush=True)
168+
print('Adapter:', self.name, 'unloaded')

gateway_addon/addon_manager_proxy.py

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

33
from nnpy.errors import NNError
4+
import functools
45
import json
56
import threading
67

78
from .ipc import IpcClient
89

10+
print = functools.partial(print, flush=True)
11+
912

1013
class 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()

gateway_addon/ipc.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
"""IPC client to communicate with the Gateway."""
22

33
from nnpy.errors import NNError
4+
import functools
45
import json
56
import nnpy
67

78

89
_IPC_BASE = 'ipc:///tmp/'
910

11+
print = functools.partial(print, flush=True)
12+
1013

1114
class IpcClient:
1215
"""IPC client which can communicate between the Gateway and an add-on."""
@@ -23,7 +26,7 @@ def __init__(self, plugin_id, verbose=False):
2326
self.manager_socket.connect(_IPC_BASE + 'gateway.addonManager')
2427

2528
if verbose:
26-
print('IpcClient: Connected to server, registering...', flush=True)
29+
print('IpcClient: Connected to server, registering...')
2730

2831
try:
2932
self.manager_socket.send(json.dumps({
@@ -33,20 +36,17 @@ def __init__(self, plugin_id, verbose=False):
3336
}
3437
}))
3538
except NNError as e:
36-
print('IpcClient: Failed to send message: {}'.format(e),
37-
flush=True)
39+
print('IpcClient: Failed to send message: {}'.format(e))
3840
return
3941

4042
try:
4143
resp = self.manager_socket.recv()
4244
except NNError as e:
43-
print('IpcClient: Error receiving message: {}'.format(e),
44-
flush=True)
45+
print('IpcClient: Error receiving message: {}'.format(e))
4546
return
4647

4748
if verbose:
48-
print('IpcClient: Received manager message: {}'.format(resp),
49-
flush=True)
49+
print('IpcClient: Received manager message: {}'.format(resp))
5050

5151
try:
5252
resp = json.loads(resp)
@@ -59,7 +59,7 @@ def __init__(self, plugin_id, verbose=False):
5959
_IPC_BASE + resp['data']['ipcBaseAddr'])
6060

6161
if verbose:
62-
print('IpcClient: Registered with PluginServer', flush=True)
62+
print('IpcClient: Registered with PluginServer')
6363
except ValueError:
6464
print('IpcClient: Unexpected registration reply from gateway: {}'
65-
.format(resp), flush=True)
65+
.format(resp))

0 commit comments

Comments
 (0)