diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/rz_mesh.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/server/rz_mesh.py b/src/server/rz_mesh.py index 6fd78851..cac2cacb 100644 --- a/src/server/rz_mesh.py +++ b/src/server/rz_mesh.py @@ -84,10 +84,6 @@ def init_ws_interface(cfg, kernel, flask_webapp): flask_webapp.logger.error("Exception while handling socketio connection", exc_info=True) return make_response__http__empty(101) # 'switching protocols' HTTP status code - def ws_broadcast_to_all(pkt): - for sessid, socket in ws_srv.sockets.iteritems(): - socket.send_packet(pkt) - # link ws hooks: multicast on topo_diff, attr_diff def decorator__ws_multicast(ws_srv, f, f_multicast): """ @@ -137,7 +133,7 @@ def init_ws_interface(cfg, kernel, flask_webapp): ws_srv.log_multicast(msg_name) - ws_broadcast_to_all(pkt) + ws_broadcast_to_rzdoc_readers(ws_srv, pkt, rzdoc) return f_ret @@ -149,6 +145,23 @@ def init_ws_interface(cfg, kernel, flask_webapp): req_ctx = f_args[1] return req_ctx.rzdoc + def ws_broadcast_to_rzdoc_readers(ws_srv, pkt, rzdoc): + """ + Cast update messege to subscribed readers + """ + + cast_set = [] + rzdoc_r_set = kernel.rzdoc__reader_set_from_rzdoc(rzdoc) + for r_assoc in rzdoc_r_set: + cast_set.append(r_assoc) + + log.debug('reader diff cast: rzdoc: %s, cast size: %d' % (rzdoc.name, len(cast_set))) + for r_assoc in cast_set: + try: + r_assoc.socket.send_packet(pkt) + except Exception as e: + r_assoc.err_count__IO += 1 + # connect socketio route route_dec = flask_webapp.route('/socket.io/<path:url_path>') f = route_dec(socketio_route_handler) |
