Class ServerSessionImpl

  • All Implemented Interfaces:
    ServerSession, Session, org.eclipse.jetty.util.component.Dumpable

    public class ServerSessionImpl
    extends java.lang.Object
    implements ServerSession, org.eclipse.jetty.util.component.Dumpable
    • Method Detail

      • getUserAgent

        public java.lang.String getUserAgent()
        Specified by:
        getUserAgent in interface ServerSession
        Returns:
        the remote user agent
      • setUserAgent

        public void setUserAgent​(java.lang.String userAgent)
        Parameters:
        userAgent - the remote user agent
      • getBrowserId

        public java.lang.String getBrowserId()
        Returns:
        the remote client identifier
      • setBrowserId

        public void setBrowserId​(java.lang.String browserId)

        Sets a remote client identifier, typically a browser.

        Parameters:
        browserId - the remote client identifier
      • sweep

        protected boolean sweep​(long now)
      • batch

        public void batch​(java.lang.Runnable batch)
        Description copied from interface: Session

        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.

        Specified by:
        batch in interface Session
        Parameters:
        batch - the Runnable to run as a batch
      • deliver

        public void deliver​(Session sender,
                            java.lang.String channelId,
                            java.lang.Object data,
                            Promise<java.lang.Boolean> promise)
        Description copied from interface: ServerSession

        Delivers the given information to this session.

        Specified by:
        deliver in interface ServerSession
        Parameters:
        sender - the session delivering the message
        channelId - the channel of the message
        data - the data of the message
        promise - the promise to notify with the result of the deliver
        See Also:
        ServerSession.deliver(Session, ServerMessage.Mutable, Promise)
      • connected

        protected boolean connected()
      • disconnect

        public void disconnect()
        Description copied from interface: Session
        Disconnects this session, ending the link between the client and the server peers.
        Specified by:
        disconnect in interface Session
        See Also:
        Session.isConnected()
      • isLocalSession

        public boolean isLocalSession()
        Specified by:
        isLocalSession in interface ServerSession
        Returns:
        whether this is a session for a local client on server-side
      • getId

        public java.lang.String getId()
        Description copied from interface: Session

        The 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.

        Specified by:
        getId in interface Session
        Returns:
        the id of this session
      • getLock

        public java.util.concurrent.locks.Lock getLock()
      • hasNonLazyMessages

        public boolean hasNonLazyMessages()
      • addMessage

        protected void addMessage​(ServerMessage message)
      • notifySuspended

        public void notifySuspended​(ServerMessage message,
                                    long timeout)
      • notifyResumed

        public void notifyResumed​(ServerMessage message,
                                  boolean timeout)
      • shouldSchedule

        public boolean shouldSchedule()
      • flush

        public void flush()
      • destroyScheduler

        public void destroyScheduler()
      • cancelExpiration

        public void cancelExpiration​(boolean metaConnect)
      • scheduleExpiration

        public void scheduleExpiration​(long defaultInterval,
                                       long defaultMaxInterval,
                                       long metaConnectCycle)
      • getMaxInterval

        public long getMaxInterval()
        Specified by:
        getMaxInterval in interface ServerSession
        Returns:
        the max period of time, in milliseconds, that the server waits before expiring the session when the client does not send messages to the server, or -1 if the default value is used
      • setMaxInterval

        public void setMaxInterval​(long maxInterval)
        Specified by:
        setMaxInterval in interface ServerSession
        Parameters:
        maxInterval - the max period of time, in milliseconds, that the server waits before expiring the session
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String name)
        Description copied from interface: Session

        Retrieves the value of named session attribute.

        Specified by:
        getAttribute in interface Session
        Parameters:
        name - the name of the attribute
        Returns:
        the attribute value or null if the attribute is not present
      • getAttributeNames

        public java.util.Set<java.lang.String> getAttributeNames()
        Specified by:
        getAttributeNames in interface Session
        Returns:
        the list of session attribute names.
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String name)
        Description copied from interface: Session

        Removes a named session attribute.

        Specified by:
        removeAttribute in interface Session
        Parameters:
        name - the name of the attribute
        Returns:
        the value of the attribute
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 java.lang.Object value)
        Description copied from interface: Session

        Sets a named session attribute value.

        Session attributes are convenience data that allows arbitrary application data to be associated with a session.

        Specified by:
        setAttribute in interface Session
        Parameters:
        name - the attribute name
        value - the attribute value
      • isHandshook

        public boolean isHandshook()
        Description copied from interface: Session

        A handshook session is a session where the handshake has successfully completed

        Specified by:
        isHandshook in interface Session
        Returns:
        whether the session is handshook
      • isConnected

        public boolean isConnected()
        Description copied from interface: Session

        A connected session is a session where the link between the client and the server has been established.

        Specified by:
        isConnected in interface Session
        Returns:
        whether the session is connected
        See Also:
        Session.disconnect()
      • isDisconnected

        public boolean isDisconnected()
      • isTerminated

        public boolean isTerminated()
      • reAdvise

        public void reAdvise()
      • takeAdvice

        public java.util.Map<java.lang.String,​java.lang.Object> takeAdvice​(ServerTransport transport)
      • setServerTransport

        public void setServerTransport​(ServerTransport transport)
      • updateServerEndPoint

        public boolean updateServerEndPoint​(java.lang.Object newEndPoint)
      • getTimeout

        public long getTimeout()
        Specified by:
        getTimeout in interface ServerSession
        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()
      • setTimeout

        public void setTimeout​(long timeoutMS)
        Specified by:
        setTimeout in interface ServerSession
        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:
        setInterval in interface ServerSession
        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()
        Specified by:
        isBroadcastToPublisher in interface ServerSession
        Returns:
        whether this session sends messages back to itself
      • setBroadcastToPublisher

        public void setBroadcastToPublisher​(boolean value)
        Description copied from interface: ServerSession
        Sets whether this session sends messages back to itself.
        Specified by:
        setBroadcastToPublisher in interface ServerSession
        Parameters:
        value - whether this session sends messages back to itself
      • removed

        protected boolean removed​(ServerMessage message,
                                  boolean timeout)
        Parameters:
        message - the message that caused the removal, or null
        timeout - whether the session has been removed due a timeout
        Returns:
        True if the session was connected.
      • setMetaConnectDeliveryOnly

        public void setMetaConnectDeliveryOnly​(boolean meta)
        Description copied from interface: ServerSession

        Sets whether delivery of messages only happen via the /meta/connect channel.

        Transports that use more than one connection to the server (e.g. HTTP transports) may deliver some messages in one connection and some in another connection, causing messages to arrive out-of-order.

        Forcing messages to be delivered only via the /meta/connect channel guarantees server-to-client message ordering.

        Specified by:
        setMetaConnectDeliveryOnly in interface ServerSession
        Parameters:
        meta - whether delivery of messages only happens via the /meta/connect channel
      • isMetaConnectDeliveryOnly

        public boolean isMetaConnectDeliveryOnly()
        Specified by:
        isMetaConnectDeliveryOnly in interface ServerSession
        Returns:
        whether delivery of messages only happens via the /meta/connect channel
      • isAllowMessageDeliveryDuringHandshake

        public boolean isAllowMessageDeliveryDuringHandshake()
      • setAllowMessageDeliveryDuringHandshake

        public void setAllowMessageDeliveryDuringHandshake​(boolean allow)
      • 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

        public void dump​(java.lang.Appendable out,
                         java.lang.String indent)
                  throws java.io.IOException
        Specified by:
        dump in interface org.eclipse.jetty.util.component.Dumpable
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object