diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-01-20 13:30:24 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-01-20 14:02:10 +0200 |
| commit | 1b8856d9c89e247510eb1237b7fd7c20446122c2 (patch) | |
| tree | ee7522584e47a9676ee5b58b50eee1f87981c3fa /src | |
| parent | a3402b11ec547c632c56f1e71325c6e9d1ab0d38 (diff) | |
rz_mesh:
- broadcast two pkts for every diff: original diff_obj & commit diff_obj
- apply selectively to REST:websocket path based on '__caller' ctx hint
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/rz_mesh.py | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/server/rz_mesh.py b/src/server/rz_mesh.py index 51c11c26..ec4bbf03 100644 --- a/src/server/rz_mesh.py +++ b/src/server/rz_mesh.py @@ -8,6 +8,7 @@ from socketio import socketio_manage from socketio.server import SocketIOHandler from socketio.server import SocketIOServer +from db_op import DBO_block_chain__commit from model.graph import Attr_Diff, Topo_Diff from rz_api_websocket import WebSocket_Graph_NS from rz_kernel import RZ_Kernel @@ -88,12 +89,18 @@ def init_ws_interface(cfg, kernel, flask_webapp): @wraps(f) def wrapped_function(*args, **kw): - f_ret_list = f(*args, **kw) - assert type(f_ret_list) in [list, tuple] + f_ret = f(*args, **kw) - pkt_data = map(_prep_for_serialization, f_ret_list) + bc_commit = False + if 'ctx' in kw and kw.get('ctx')['__caller'] == 'ws': + bc_commit = False + # assert type(f_ret) in [list, tuple] + + gen_copy = [o for o in f_ret] # copy generator items + + pkt_data = map(_prep_for_serialization, [diff_obj for (diff_obj, op, op_ret) in gen_copy]) msg_name = f.__name__ pkt = dict(type="event", name=msg_name, @@ -101,10 +108,25 @@ def init_ws_interface(cfg, kernel, flask_webapp): endpoint='/graph') ws_srv.log_multicast(msg_name) - ws_broadcast_to_all(pkt) - return f_ret + if bc_commit == False: + for f_ret_item in gen_copy: + + diff_obj, op, op_ret = f_ret_item + if not isinstance(op, DBO_block_chain__commit): + continue + + pkt_data = _prep_for_serialization(op_ret) + msg_name = f.__name__ + pkt = dict(type="event", + name=msg_name, + args=pkt_data, + endpoint='/graph') + ws_broadcast_to_all(pkt) + + for o in gen_copy: + yield o return wrapped_function |
