/** Stops the subscription manager. */ @Override public void stop() { super.stop(); // Remove management. if (isManaged() && getControl() != null) { getControl().unregister(); setControl(null); setManaged(false); } // Destroy subscriptions synchronized (this) { if (subscriberSessionManager != null) { subscriberSessionManager.shutdown(); subscriberSessionManager = null; } } synchronized (allSubscriptionsLock) { if (!allSubscriptions.isEmpty()) { for (Map.Entry<Object, MessageClient> objectMessageClientEntry : allSubscriptions.entrySet()) removeSubscriber(objectMessageClientEntry.getValue()); } } }
/** * Turn on timeout for the provided client. * * @param client the client */ protected void monitorTimeout(MessageClient client) { if (subscriberSessionManager != null) { synchronized (client) { if (!client.isTimingOut()) { subscriberSessionManager.scheduleTimeout(client); client.setTimingOut(true); } } } }