private void innerRegister(RoutingModel model) { boolean exists = false; do { try { _zk.createTempSeq(model.getKey(), model2Bytes(model)); _tracer.info("RouteModel has been registered.\r\n" + model.toString()); exists = false; } catch (KeeperException.NodeExistsException ex) { if (ex.code() == Code.NODEEXISTS) { exists = true; _tracer.error("Node is exist.", ex); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } else { exists = false; } } catch (Throwable t) { _tracer.error("DynamicRouting.onConnected error.", t); exists = false; } } while (exists); }
@Override public void onDataChanged(String key, byte[] data) { _tracer.debug("Got data: " + PSConvert.bytes2HexString(data)); RoutingModel model = bytes2Model(data); _tracer.info("Got RoutingModel: " + model.toString()); synchronized (_models) { _models.put(model.getKey(), model); } _tracer.info(getRoutingList()); }