diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-04-09 01:43:44 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-09 02:03:45 +0300 |
| commit | 421e3d7fe6e8a31b38e50b390687c41ac6b9e5ed (patch) | |
| tree | 4941e8a43b2dc48b7e3ed395d57096305e2f4684 | |
| parent | 265491cde730218399ec07535f7c35437c43c4cb (diff) | |
rz_mesh: reader support: refactor ws_broadcast_to_all() -> ws_broadcast_to_rzdoc_readers()
| -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) |
