Class ServerSessionImpl
- All Implemented Interfaces:
ServerSession,Session,org.eclipse.jetty.util.component.Dumpable
public class ServerSessionImpl extends Object implements ServerSession, org.eclipse.jetty.util.component.Dumpable
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.cometd.bayeux.server.ServerSession
ServerSession.DeQueueListener, ServerSession.Extension, ServerSession.MaxQueueListener, ServerSession.MessageListener, ServerSession.QueueListener, ServerSession.RemoveListener, ServerSession.ServerSessionListener -
Constructor Summary
Constructors Constructor Description ServerSessionImpl(BayeuxServerImpl bayeux)ServerSessionImpl(BayeuxServerImpl bayeux, LocalSessionImpl localSession, String idHint) -
Method Summary
Modifier and Type Method Description voidaddExtension(ServerSession.Extension extension)Adds the given extension to this session.voidaddListener(ServerSession.ServerSessionListener listener)Adds the given listener to this session.protected voidaddMessage(ServerMessage message)voidbatch(Runnable batch)Executes 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.longcalculateInterval(long defaultInterval)longcalculateTimeout(long defaultTimeout)voidcancelExpiration(boolean metaConnect)voidcancelSchedule()protected voidconnected()voiddeliver(Session sender, String channelId, Object data)Delivers the given information to this session.voiddeliver(Session sender, ServerMessage.Mutable message)Delivers the given message to this session.voiddisconnect()Disconnects this session, ending the link between the client and the server peers.protected voiddoDeliver(ServerSession sender, ServerMessage.Mutable mutable)Stringdump()voiddump(Appendable out, String indent)booleanendBatch()Ends a batch started withSession.startBatch().protected booleanextendRecv(ServerMessage.Mutable message)protected ServerMessage.MutableextendSend(ServerMessage.Mutable mutable)voidflush()ObjectgetAttribute(String name)Retrieves the value of named session attribute.Set<String>getAttributeNames()BayeuxServerImplgetBayeuxServer()StringgetBrowserId()List<ServerSession.Extension>getExtensions()StringgetId()The clientId of the session.longgetInterval()List<ServerSession.ServerSessionListener>getListeners()LocalSessiongetLocalSession()ObjectgetLock()protected longgetMaxInterval()Queue<ServerMessage>getQueue()Set<ServerChannel>getSubscriptions()longgetTimeout()StringgetUserAgent()protected voidhandshake()booleanhasNonLazyMessages()booleanisAllowMessageDeliveryDuringHandshake()booleanisBroadcastToPublisher()booleanisConnected()A connected session is a session where the link between the client and the server has been established.booleanisDisconnected()booleanisHandshook()A handshook session is a session where the handshake has successfully completedbooleanisLocalSession()booleanisMetaConnectDeliveryOnly()voidreAdvise()ObjectremoveAttribute(String name)Removes a named session attribute.protected booleanremoved(boolean timedOut)voidremoveExtension(ServerSession.Extension extension)Removes the given extension from this session.voidremoveListener(ServerSession.ServerSessionListener listener)Removes the given listener from this session.voidscheduleExpiration(long defaultInterval)voidsetAllowMessageDeliveryDuringHandshake(boolean allow)voidsetAttribute(String name, Object value)Sets a named session attribute value.voidsetBroadcastToPublisher(boolean value)voidsetBrowserId(String browserId)Sets a remote client identifier, typically a browser.voidsetInterval(long intervalMS)voidsetMetaConnectDeliveryOnly(boolean meta)voidsetScheduler(AbstractServerTransport.Scheduler newScheduler)voidsetTimeout(long timeoutMS)voidsetUserAgent(String userAgent)booleanshouldSchedule()voidstartBatch()Starts a batch, to be ended withSession.endBatch().protected voidsubscribedTo(ServerChannelImpl channel)protected voidsweep(long now)Map<String,Object>takeAdvice(ServerTransport transport)List<ServerMessage>takeQueue()StringtoString()protected voidunsubscribedFrom(ServerChannelImpl channel)voidupdateTransientInterval(long interval)Updates the transient interval with the given value.voidupdateTransientTimeout(long timeout)Updates the transient timeout with the given value.
-
Constructor Details
-
Method Details
-
getBayeuxServer
-
getUserAgent
- Specified by:
getUserAgentin interfaceServerSession- Returns:
- the remote user agent
-
setUserAgent
- Parameters:
userAgent- the remote user agent
-
getBrowserId
- Returns:
- the remote client identifier
-
setBrowserId
Sets a remote client identifier, typically a browser.
- Parameters:
browserId- the remote client identifier
-
sweep
protected void sweep(long now) -
getSubscriptions
- Specified by:
getSubscriptionsin interfaceServerSession- Returns:
- the set of channels to which this session is subscribed to
-
addExtension
Description copied from interface:ServerSessionAdds the given extension to this session.
- Specified by:
addExtensionin interfaceServerSession- Parameters:
extension- the extension to add- See Also:
ServerSession.removeExtension(Extension)
-
removeExtension
Description copied from interface:ServerSessionRemoves the given extension from this session.
- Specified by:
removeExtensionin interfaceServerSession- Parameters:
extension- the extension to remove- See Also:
ServerSession.addExtension(Extension)
-
getExtensions
- Specified by:
getExtensionsin interfaceServerSession- Returns:
- an immutable list of extensions present in this ServerSession instance
- See Also:
ServerSession.addExtension(Extension)
-
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.
-
deliver
Description copied from interface:ServerSessionDelivers the given message to this session.
This is different from
ServerChannel.publish(Session, ServerMessage.Mutable)as the message is delivered only to this session and not to all subscribers of the channel.The message should still have a channel id specified, so that the ClientSession may identify the listeners the message should be delivered to.
- Specified by:
deliverin interfaceServerSession- Parameters:
sender- the session delivering the messagemessage- the message to deliver- See Also:
ServerSession.deliver(Session, String, Object)
-
deliver
Description copied from interface:ServerSessionDelivers the given information to this session.
- Specified by:
deliverin interfaceServerSession- Parameters:
sender- the session delivering the messagechannelId- the channel of the messagedata- the data of the message- See Also:
ServerSession.deliver(Session, ServerMessage.Mutable)
-
doDeliver
-
extendSend
-
handshake
protected void handshake() -
connected
protected void connected() -
disconnect
public void disconnect()Description copied from interface:SessionDisconnects this session, ending the link between the client and the server peers.- Specified by:
disconnectin interfaceSession- See Also:
Session.isConnected()
-
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:
Session.endBatch(),Session.batch(Runnable)
-
endBatch
public boolean endBatch()Description copied from interface:SessionEnds a batch started with
Session.startBatch().- Specified by:
endBatchin interfaceSession- Returns:
- true if the batch ended and there were messages to send.
- See Also:
Session.startBatch()
-
getLocalSession
- Specified by:
getLocalSessionin interfaceServerSession- Returns:
- the
LocalSessionassociated with this session, or null if this is a session representing a remote client.
-
isLocalSession
public boolean isLocalSession()- Specified by:
isLocalSessionin interfaceServerSession- Returns:
- whether this is a session for a local client on server-side
-
addListener
Description copied from interface:ServerSessionAdds the given listener to this session.
- Specified by:
addListenerin interfaceServerSession- Parameters:
listener- the listener to add- See Also:
ServerSession.removeListener(ServerSessionListener)
-
getId
Description copied from interface:SessionThe clientId of the session.
This would more correctly be called a "sessionId", but for backwards compatibility with the Bayeux protocol, it is a field called "clientId" that identifies a session.
-
getLock
-
getQueue
-
hasNonLazyMessages
public boolean hasNonLazyMessages() -
addMessage
-
takeQueue
-
removeListener
Description copied from interface:ServerSessionRemoves the given listener from this session.
- Specified by:
removeListenerin interfaceServerSession- Parameters:
listener- the listener to remove- See Also:
ServerSession.addListener(ServerSessionListener)
-
getListeners
-
setScheduler
-
shouldSchedule
public boolean shouldSchedule() -
flush
public void flush() -
cancelSchedule
public void cancelSchedule() -
cancelExpiration
public void cancelExpiration(boolean metaConnect) -
scheduleExpiration
public void scheduleExpiration(long defaultInterval) -
getMaxInterval
protected long getMaxInterval() -
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 list of 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
-
isHandshook
public boolean isHandshook()Description copied from interface:SessionA handshook session is a session where the handshake has successfully completed
- Specified by:
isHandshookin interfaceSession- Returns:
- whether the session is handshook
-
isConnected
public boolean isConnected()Description copied from interface:SessionA connected session is a session where the link between the client and the server has been established.
- Specified by:
isConnectedin interfaceSession- Returns:
- whether the session is connected
- See Also:
Session.disconnect()
-
isDisconnected
public boolean isDisconnected() -
extendRecv
-
reAdvise
public void reAdvise() -
takeAdvice
-
getTimeout
public long getTimeout()- Specified by:
getTimeoutin interfaceServerSession- Returns:
- the period of time, in milliseconds, that the server will hold connect messages for this session or -1 if the default value is used
- See Also:
ServerTransport.getTimeout()
-
getInterval
public long getInterval()- Specified by:
getIntervalin interfaceServerSession- Returns:
- the period of time, in milliseconds, that the client associated with this session will wait before issuing a connect message, or -1 if the default value is used
- See Also:
ServerTransport.getInterval(),ServerSession.setInterval(long)
-
setTimeout
public void setTimeout(long timeoutMS)- Specified by:
setTimeoutin interfaceServerSession- Parameters:
timeoutMS- the period of time, in milliseconds, that the server will hold connect messages for this session
-
setInterval
public void setInterval(long intervalMS)- Specified by:
setIntervalin interfaceServerSession- Parameters:
intervalMS- the period of time, in milliseconds, that the client associated with this session will wait before issuing a connect message
-
isBroadcastToPublisher
public boolean isBroadcastToPublisher() -
setBroadcastToPublisher
public void setBroadcastToPublisher(boolean value) -
removed
protected boolean removed(boolean timedOut)- Parameters:
timedOut- whether the session has been timed out- Returns:
- True if the session was connected.
-
setMetaConnectDeliveryOnly
public void setMetaConnectDeliveryOnly(boolean meta) -
isMetaConnectDeliveryOnly
public boolean isMetaConnectDeliveryOnly() -
isAllowMessageDeliveryDuringHandshake
public boolean isAllowMessageDeliveryDuringHandshake() -
setAllowMessageDeliveryDuringHandshake
public void setAllowMessageDeliveryDuringHandshake(boolean allow) -
subscribedTo
-
unsubscribedFrom
-
calculateTimeout
public long calculateTimeout(long defaultTimeout) -
calculateInterval
public long calculateInterval(long defaultInterval) -
updateTransientTimeout
public void updateTransientTimeout(long timeout)Updates the transient timeout with the given value. The transient timeout is the one sent by the client, that should temporarily override the session/transport timeout, for example when the client sends {timeout:0}- Parameters:
timeout- the value to update the timeout to- See Also:
updateTransientInterval(long)
-
updateTransientInterval
public void updateTransientInterval(long interval)Updates the transient interval with the given value. The transient interval is the one sent by the client, that should temporarily override the session/transport interval, for example when the client sends {timeout:0,interval:60000}- Parameters:
interval- the value to update the interval to- See Also:
updateTransientTimeout(long)
-
dump
- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable
-
dump
- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable- Throws:
IOException
-
toString
-