@Override protected void removeRegistration() { if (registry != null) { T publicProxy = registry.getRpcService(serviceType); RpcService currentDelegate = RuntimeCodeHelper.getDelegate(publicProxy); if (currentDelegate == getInstance()) { RuntimeCodeHelper.setDelegate(publicProxy, null); } registry = null; } }
@Override public final <T extends RpcService> RpcRegistration<T> addRpcImplementation( Class<T> type, T implementation) throws IllegalStateException { @SuppressWarnings("unchecked") RpcRouter<T> potentialRouter = (RpcRouter<T>) rpcRouters.get(type); if (potentialRouter != null) { checkState( potentialRouter.getDefaultService() == null, "Default service for routed RPC already registered."); return potentialRouter.registerDefaultService(implementation); } T publicProxy = getRpcService(type); RpcService currentDelegate = RuntimeCodeHelper.getDelegate(publicProxy); checkState(currentDelegate == null, "Rpc service is already registered"); LOG.debug( "Registering {} as global implementation of {} in {}", implementation, type.getSimpleName(), this); RuntimeCodeHelper.setDelegate(publicProxy, implementation); notifyGlobalRpcAdded(type); return new RpcProxyRegistration<T>(type, implementation, this); }