summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-01-12 01:16:47 +0200
committerLV-426 <lv-426@taproot.org.il>2015-01-12 01:28:24 +0200
commitec40a28183aec2f9965c460742f145232ff1fce9 (patch)
treea48cc2437a0952b05b001113362860547a7dd17e
parente7332b144c38c36c0fd782d7b40e50fcbc9e18cd (diff)
rz_mesh: handle multiple returned values, serialization special-case handling
-rw-r--r--src/server/rz_mesh.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/server/rz_mesh.py b/src/server/rz_mesh.py
index 7e445590..05eca265 100644
--- a/src/server/rz_mesh.py
+++ b/src/server/rz_mesh.py
@@ -79,25 +79,31 @@ def init_ws_interface(cfg, kernel, flask_webapp):
@param f: [!] wrapped function, name used to derive socket message name
"""
+ def _prep_for_serialization(o):
+ # handle special serialization cases
+ if isinstance(o, Topo_Diff):
+ return o.to_json_dict()
+ return o
+
@wraps(f)
def wrapped_function(*args, **kw):
- f_ret = f(*args, **kw)
+ f_ret_list = f(*args, **kw)
+
+ assert type(f_ret_list) in [list, tuple]
- pkt_data = f_ret
- if isinstance(f_ret, Topo_Diff):
- pkt_data = f_ret.to_json_dict()
+ pkt_data = map(_prep_for_serialization, f_ret_list)
msg_name = f.__name__
pkt = dict(type="event",
name=msg_name,
- args=[pkt_data],
+ args=pkt_data,
endpoint='/graph')
ws_srv.log_multicast(msg_name)
for sessid, socket in ws_srv.sockets.iteritems():
socket.send_packet(pkt)
- return f_ret
+ return f_ret_list
return wrapped_function