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); }
private DynamicRouting(String conn, String userName, String password) { _isConnected = false; _gson = new Gson(); _myModels = new ArrayList<RoutingModel>(); _models = new HashMap<>(); _zk = new ZKConnection(conn, userName, password); _zk.register(this); }
@Override public synchronized void onConnected(boolean newSession) { _isConnected = true; if (!newSession) { _tracer.info(getRoutingList()); return; } for (RoutingModel model : _myModels) innerRegister(model); if (_myModels.size() == 0) { try { _zk.fireDataChanged(); } catch (Throwable t) { _tracer.error("DynamicRouting.onConnected error.", t); } } }