@Override public synchronized void configure(SlobroksConfig config) { String[] slist = new String[config.slobrok().size()]; for(int i = 0; i < config.slobrok().size(); i++) { slist[i] = config.slobrok(i).connectionspec(); } if (slobroks == null) { slobroks = new SlobrokList(); } slobroks.setup(slist); if (mirror == null) { mirror = new Mirror(orb, slobroks); } }
public Builder(SlobroksConfig config) { for (Slobrok s : config.slobrok()) { slobrok(new Slobrok.Builder(s)); } }
private static Network newNetwork(RPCNetworkParams params) { SlobroksConfig cfg = params.getSlobroksConfig(); if (cfg == null) { cfg = ConfigGetter.getConfig(SlobroksConfig.class, params.getSlobrokConfigId()); } if (cfg.slobrok().isEmpty()) { return new NullNetwork(); // for LocalApplication } return new RPCNetwork(params); } }
/** * The container has no rpc methods, but we still need an RPC sever * to register in Slobrok to enable orchestration */ private Register registerInSlobrok(SlobroksConfig slobrokConfig, QrConfig qrConfig) { if ( ! qrConfig.rpc().enabled()) return null; // 1. Set up RPC server supervisor = new Supervisor(new Transport()); Spec listenSpec = new Spec(qrConfig.rpc().port()); try { acceptor = supervisor.listen(listenSpec); } catch (ListenFailedException e) { throw new RuntimeException("Could not create rpc server listening on " + listenSpec, e); } // 2. Register it in slobrok SlobrokList slobrokList = new SlobrokList(); slobrokList.setup(slobrokConfig.slobrok().stream().map(SlobroksConfig.Slobrok::connectionspec).toArray(String[]::new)); Spec mySpec = new Spec(HostName.getLocalhost(), acceptor.port()); slobrokRegistrator = new Register(supervisor, slobrokList, mySpec); slobrokRegistrator.registerName(qrConfig.rpc().slobrokId()); log.log(LogLevel.INFO, "Registered name '" + qrConfig.rpc().slobrokId() + "' at " + mySpec + " with: " + slobrokList); return slobrokRegistrator; }