@Override public void interfaceRemoved(Query operation, DOFObjectID objectID, DOFInterfaceID interfaceID) { if (!objectID.equals(providerId) || !interfaceID.equals(HubRequestInterface.IID)) return; log.trace("Hub Request Provider Removed {}:{}", objectID, interfaceID); // requestProvided.set(false); GracePeriodExpiredTask gracePeriodExpiredTask = new GracePeriodExpiredTask(this); synchronized (this) { if (gracePeriodFuture != null) { gracePeriodFuture.cancel(true); gracePeriodFuture = null; } gracePeriodExpiredFuture = hubProvideFactory.timerExecutor.schedule( gracePeriodExpiredTask, requestorGracePeriodMinutes.get(), TimeUnit.MINUTES); if (provider != null) provider.requestProvideStopped(-1); } }
/** * ************************************************************************ * DOFSystem.QueryOperationListener implementation * ************************************************************************ */ @Override public void interfaceAdded(Query operation, DOFObjectID objectId, DOFInterfaceID interfaceId) { if (!objectId.equals(providerId) || !interfaceId.equals(HubRequestInterface.IID)) return; // if (gracePeriodExpired.get()) // return; // requestProvided.set(true); log.trace("Hub Request Provider Added {}:{}", objectId, interfaceId); synchronized (this) { if (gracePeriodExpiredFuture != null) { gracePeriodExpiredFuture.cancel(true); gracePeriodExpiredFuture = null; provider.requestProvideStarted(); } if (provider != null) return; // existing state is fine, we are done here. // first time, or first time after a hubProvideFactory.remove(monitor) gracePeriodFuture = hubProvideFactory.executor.submit(new GetGracePeriodTask(this, objectId, interfaceId)); } }