Class AbstractClientSession
- All Implemented Interfaces:
ClientSession, Session, org.eclipse.jetty.util.component.Dumpable
- Direct Known Subclasses:
BayeuxClient, LocalSessionImpl
Partial implementation of ClientSession.
It handles extensions and batching, and provides utility methods to be used by subclasses.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface ClientSession
ClientSession.Extension, ClientSession.MessageListenerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainer -
Field Summary
Fields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddExtension(ClientSession.Extension extension) Adds an extension to this session.voidExecutes the given command in a batch so that any Bayeux message sent by the command (via the Bayeux API) is queued up until the end of the command and then all messages are sent at once.voiddump(Appendable out, String indent) booleanendBatch()Ends a batch started withSession.startBatch().protected voidextendIncoming(Message.Mutable message, Promise<Boolean> promise) protected voidextendOutgoing(Message.Mutable message, Promise<Boolean> promise) getAttribute(String name) Retrieves the value of named session attribute.getChannel(String channelName) Returns a client side channel scoped by this session.getChannel(ChannelId channelId) protected booleanprotected abstract AbstractClientSession.AbstractSessionChannelnewChannel(ChannelId channelId) protected abstract ChannelIdnewChannelId(String channelId) protected Message.Mutableprotected Stringprotected voidnotifyCallback(ClientSession.MessageListener callback, Message.Mutable message) protected voidnotifyListeners(Message.Mutable message) voidreceive(Message.Mutable message, Promise<Void> promise) Receives a message (from the server) and process it.protected voidregisterCallback(String messageId, ClientSession.MessageListener callback) protected voidregisterSubscriber(String messageId, ClientSessionChannel.MessageListener subscriber) voidremoteCall(String target, Object data, ClientSession.MessageListener callback) Performs a remote call to the server, to the specifiedtarget, and with the givendataas payload.removeAttribute(String name) Removes a named session attribute.voidremoveExtension(ClientSession.Extension extension) Removes an extension from this session.protected voidprotected abstract voidsend(Message.Mutable message) protected abstract voidvoidsetAttribute(String name, Object value) Sets a named session attribute value.voidStarts a batch, to be ended withSession.endBatch().protected ClientSession.MessageListenerunregisterCallback(String messageId) protected ClientSessionChannel.MessageListenerunregisterSubscriber(String messageId) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ClientSession
disconnect, disconnect, handshake, handshake, handshakeMethods inherited from interface org.eclipse.jetty.util.component.Dumpable
dump, dumpSelfMethods inherited from interface Session
getId, isConnected, isHandshook
-
Constructor Details
-
AbstractClientSession
protected AbstractClientSession()
-
-
Method Details
-
newMessageId
-
addExtension
Description copied from interface:ClientSessionAdds an extension to this session.- Specified by:
addExtensionin interfaceClientSession- Parameters:
extension- the extension to add- See Also:
-
removeExtension
Description copied from interface:ClientSessionRemoves an extension from this session.- Specified by:
removeExtensionin interfaceClientSession- Parameters:
extension- the extension to remove- See Also:
-
getExtensions
- Specified by:
getExtensionsin interfaceClientSession- Returns:
- an immutable list of extensions present in this ClientSession instance
- See Also:
-
extendOutgoing
-
extendIncoming
-
newChannelId
-
newChannel
-
getChannel
Description copied from interface:ClientSessionReturns a client side channel scoped by this session.
The channel name may be for a specific channel (e.g. "/foo/bar") or for a wild channel (e.g. "/meta/**" or "/foo/*").
This method will always return a channel, even if the the channel has not been created on the server side. The server side channel is only involved once a publish or subscribe method is called on the channel returned by this method.
Typical usage examples are:
clientSession.getChannel("/foo/bar").subscribe(mySubscriptionListener); clientSession.getChannel("/foo/bar").publish("Hello"); clientSession.getChannel("/meta/*").addListener(myMetaChannelListener);- Specified by:
getChannelin interfaceClientSession- Parameters:
channelName- specific or wild channel name.- Returns:
- a channel scoped by this session.
-
getChannel
-
getChannels
-
startBatch
public void startBatch()Description copied from interface:SessionStarts a batch, to be ended with
Session.endBatch().The
Session.batch(Runnable)method should be preferred since it automatically starts and ends a batch without relying on a try/finally block.This method is to be used in the cases where the use of
Session.batch(Runnable)is not possible or would make the code more complex.- Specified by:
startBatchin interfaceSession- See Also:
-
sendBatch
protected abstract void sendBatch() -
endBatch
public boolean endBatch()Description copied from interface:SessionEnds a batch started with
Session.startBatch(). -
batch
Description copied from interface:SessionExecutes the given command in a batch so that any Bayeux message sent by the command (via the Bayeux API) is queued up until the end of the command and then all messages are sent at once.
-
isBatching
protected boolean isBatching() -
getAttribute
Description copied from interface:SessionRetrieves the value of named session attribute.
- Specified by:
getAttributein interfaceSession- Parameters:
name- the name of the attribute- Returns:
- the attribute value or null if the attribute is not present
-
getAttributeNames
- Specified by:
getAttributeNamesin interfaceSession- Returns:
- the session attribute names.
-
removeAttribute
Description copied from interface:SessionRemoves a named session attribute.
- Specified by:
removeAttributein interfaceSession- Parameters:
name- the name of the attribute- Returns:
- the value of the attribute
-
setAttribute
Description copied from interface:SessionSets a named session attribute value.
Session attributes are convenience data that allows arbitrary application data to be associated with a session.
- Specified by:
setAttributein interfaceSession- Parameters:
name- the attribute namevalue- the attribute value
-
remoteCall
Description copied from interface:ClientSessionPerforms a remote call to the server, to the specified
target, and with the givendataas payload.The remote call response will be delivered via the
callbackparameter.Typical usage:
clientSession.remoteCall("getOnlineStatus", userId, new MessageListener() { @Override public void onMessage(Message message) { if (message.isSuccessful()) { String status = (String)message.getData(); // Update UI with online status. } else { // Remote call failed. } } });- Specified by:
remoteCallin interfaceClientSession- Parameters:
target- the remote call targetdata- the remote call parameterscallback- the listener that receives the remote call response
-
send
-
newMessage
-
resetSubscriptions
protected void resetSubscriptions() -
receive
Receives a message (from the server) and process it.
Processing the message involves calling the receive
extensionsand the channellisteners.- Parameters:
message- the message received.promise- the promise notified of the receive processing
-
notifyListeners
-
notifyCallback
-
registerCallback
-
unregisterCallback
-
registerSubscriber
protected void registerSubscriber(String messageId, ClientSessionChannel.MessageListener subscriber) -
unregisterSubscriber
-
dump
- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable- Throws:
IOException
-