/** * <p>Disconnects this session, ending the link between the client and the server peers.</p> * * @param callback the message listener to notify of the disconnect result */ void disconnect(MessageListener callback);
/** * @param template additional fields to add to the handshake message. * @param callback the message listener to notify of the handshake result * @deprecated use {@link #handshake(Map, MessageListener)} instead */ @Deprecated default void handshake(Map<String, Object> template, ClientSessionChannel.MessageListener callback) { handshake(template, message -> callback.onMessage(getChannel(Channel.META_HANDSHAKE), message)); }
private void deprocessMetaHandshakeListener(Object bean) { ClientSessionChannel.MessageListener listener = handshakeListeners.remove(bean); if (listener != null) { clientSession.getChannel(Channel.META_HANDSHAKE).removeListener(listener); } }
if (clientSession.isHandshook()) { clientSession.getChannel(channel).subscribe(subscriptionCallback);
/** * <p>Equivalent to {@link #handshake(Map) handshake(null)}.</p> */ default void handshake() { handshake(null); }
@Override default void disconnect() { disconnect(MessageListener.NOOP); }
@Override public void onMessage(ClientSessionChannel channel, Message message) { if (message.isSuccessful()) { final List<SubscriptionCallback> subscriptions = subscribers.get(bean); if (subscriptions != null) { clientSession.batch(() -> { for (SubscriptionCallback subscription : subscriptions) { subscription.subscribe(); } }); } } } }
private boolean deprocessSubscription(Object bean) { boolean result = false; List<SubscriptionCallback> callbacks = subscribers.remove(bean); if (callbacks != null) { for (SubscriptionCallback callback : callbacks) { clientSession.getChannel(callback.subscription).unsubscribe(callback); result = true; } } return result; }
/** * <p>Equivalent to {@link #handshake(Map, ClientSession.MessageListener) handshake(template, null)}.</p> * * @param template additional fields to add to the handshake message. */ default void handshake(Map<String, Object> template) { handshake(template, MessageListener.NOOP); }
private void subscribe() { clientSession.getChannel(subscription).subscribe(this); } }
private boolean deprocessListener(Object bean) { boolean result = false; List<ListenerCallback> callbacks = listeners.remove(bean); if (callbacks != null) { for (ListenerCallback callback : callbacks) { ClientSessionChannel channel = clientSession.getChannel(callback.subscription); if (channel != null) { channel.removeListener(callback); result = true; } } } return result; }
private void processMetaHandshakeListener(Object bean) { if (bean != null) { MetaHandshakeListener listener = new MetaHandshakeListener(bean); ClientSessionChannel.MessageListener existing = handshakeListeners.putIfAbsent(bean, listener); if (existing == null) { clientSession.getChannel(Channel.META_HANDSHAKE).addListener(listener); } } }
clientSession.getChannel(channel).addListener(listenerCallback);