Class AbstractSession

java.lang.Object
com.google.code.yanf4j.core.impl.AbstractSession
All Implemented Interfaces:
Session
Direct Known Subclasses:
AbstractNioSession

public abstract class AbstractSession extends Object implements Session
Base connection
  • Field Details

    • readBuffer

      protected IoBuffer readBuffer
    • log

      protected static final org.slf4j.Logger log
    • attributes

      protected final ConcurrentHashMap<String,Object> attributes
    • writeQueue

      protected Queue<WriteMessage> writeQueue
    • sessionIdleTimeout

      protected long sessionIdleTimeout
    • sessionTimeout

      protected long sessionTimeout
    • encoder

      protected CodecFactory.Encoder encoder
    • decoder

      protected CodecFactory.Decoder decoder
    • closed

      protected volatile boolean closed
    • statistics

      protected Statistics statistics
    • handler

      protected Handler handler
    • loopback

      protected boolean loopback
    • lastOperationTimeStamp

      public AtomicLong lastOperationTimeStamp
    • scheduleWritenBytes

      protected AtomicLong scheduleWritenBytes
    • dispatchMessageDispatcher

      protected final Dispatcher dispatchMessageDispatcher
    • useBlockingWrite

      protected boolean useBlockingWrite
    • useBlockingRead

      protected boolean useBlockingRead
    • handleReadWriteConcurrently

      protected boolean handleReadWriteConcurrently
    • writeLock

      protected ReentrantLock writeLock
    • currentMessage

      protected AtomicReference<WriteMessage> currentMessage
  • Constructor Details

    • AbstractSession

      public AbstractSession(SessionConfig sessionConfig)
  • Method Details

    • getSessionIdleTimeout

      public long getSessionIdleTimeout()
      Specified by:
      getSessionIdleTimeout in interface Session
    • setSessionIdleTimeout

      public void setSessionIdleTimeout(long sessionIdleTimeout)
      Specified by:
      setSessionIdleTimeout in interface Session
    • getSessionTimeout

      public long getSessionTimeout()
      Specified by:
      getSessionTimeout in interface Session
    • setSessionTimeout

      public void setSessionTimeout(long sessionTimeout)
      Specified by:
      setSessionTimeout in interface Session
    • getWriteQueue

      public Queue<WriteMessage> getWriteQueue()
    • getStatistics

      public Statistics getStatistics()
    • getHandler

      public Handler getHandler()
      Specified by:
      getHandler in interface Session
    • getDispatchMessageDispatcher

      public Dispatcher getDispatchMessageDispatcher()
    • getWriteLock

      public ReentrantLock getWriteLock()
    • decode

      public abstract void decode()
    • updateTimeStamp

      public void updateTimeStamp()
    • getLastOperationTimeStamp

      public long getLastOperationTimeStamp()
      Description copied from interface: Session
      Return last operation timestamp,operation include read,write,idle
      Specified by:
      getLastOperationTimeStamp in interface Session
      Returns:
    • isHandleReadWriteConcurrently

      public final boolean isHandleReadWriteConcurrently()
      Description copied from interface: Session
      Return true if allow handling read and write concurrently,default is true.
      Specified by:
      isHandleReadWriteConcurrently in interface Session
      Returns:
    • setHandleReadWriteConcurrently

      public final void setHandleReadWriteConcurrently(boolean handleReadWriteConcurrently)
      Specified by:
      setHandleReadWriteConcurrently in interface Session
    • getScheduleWritenBytes

      public long getScheduleWritenBytes()
      Description copied from interface: Session
      Return the bytes in write queue,there bytes is in memory.Use this method to controll writing speed.
      Specified by:
      getScheduleWritenBytes in interface Session
      Returns:
    • getEncoder

      public CodecFactory.Encoder getEncoder()
      Description copied from interface: Session
      Return current encoder
      Specified by:
      getEncoder in interface Session
      Returns:
    • setEncoder

      public void setEncoder(CodecFactory.Encoder encoder)
      Description copied from interface: Session
      Set encoder
      Specified by:
      setEncoder in interface Session
      Parameters:
      encoder -
    • getDecoder

      public CodecFactory.Decoder getDecoder()
      Description copied from interface: Session
      Return current decoder
      Specified by:
      getDecoder in interface Session
      Returns:
    • getReadBuffer

      public IoBuffer getReadBuffer()
    • setReadBuffer

      public void setReadBuffer(IoBuffer readBuffer)
    • setDecoder

      public void setDecoder(CodecFactory.Decoder decoder)
      Specified by:
      setDecoder in interface Session
    • getReadBufferByteOrder

      public final ByteOrder getReadBufferByteOrder()
      Description copied from interface: Session
      Return the session read buffer's byte order,big end or little end.
      Specified by:
      getReadBufferByteOrder in interface Session
      Returns:
    • setReadBufferByteOrder

      public final void setReadBufferByteOrder(ByteOrder readBufferByteOrder)
      Specified by:
      setReadBufferByteOrder in interface Session
    • onIdle

      protected void onIdle()
    • onConnected

      protected void onConnected()
    • onExpired

      public void onExpired()
    • wrapMessage

      protected abstract WriteMessage wrapMessage(Object msg, Future<Boolean> writeFuture)
    • preprocessWriteMessage

      protected WriteMessage preprocessWriteMessage(WriteMessage writeMessage)
      Pre-Process WriteMessage before writing to channel
      Parameters:
      writeMessage -
      Returns:
    • dispatchReceivedMessage

      protected void dispatchReceivedMessage(Object message)
    • onMessage

      private void onMessage(Object message, Session session)
    • isClosed

      public final boolean isClosed()
      Description copied from interface: Session
      Check if session is closed
      Specified by:
      isClosed in interface Session
      Returns:
    • setClosed

      public final void setClosed(boolean closed)
    • close

      public void close()
      Description copied from interface: Session
      Close session
      Specified by:
      close in interface Session
    • closeChannel

      protected abstract void closeChannel() throws IOException
      Throws:
      IOException
    • onException

      public void onException(Throwable e)
    • onClosed

      protected void onClosed()
    • setAttribute

      public void setAttribute(String key, Object value)
      Description copied from interface: Session
      Set a attribute attched with this session
      Specified by:
      setAttribute in interface Session
      Parameters:
      key -
      value -
    • setAttributeIfAbsent

      public Object setAttributeIfAbsent(String key, Object value)
      Specified by:
      setAttributeIfAbsent in interface Session
    • removeAttribute

      public void removeAttribute(String key)
      Description copied from interface: Session
      Remove attribute
      Specified by:
      removeAttribute in interface Session
      Parameters:
      key -
    • getAttribute

      public Object getAttribute(String key)
      Description copied from interface: Session
      Return attribute associated with key
      Specified by:
      getAttribute in interface Session
      Parameters:
      key -
      Returns:
    • clearAttributes

      public void clearAttributes()
      Description copied from interface: Session
      Clear attributes
      Specified by:
      clearAttributes in interface Session
    • start

      public void start()
      Description copied from interface: Session
      Start session
      Specified by:
      start in interface Session
    • start0

      protected abstract void start0()
    • onStarted

      protected void onStarted()
    • write

      public void write(Object packet)
      Description copied from interface: Session
      Write a message,if you don't care when the message is written
      Specified by:
      write in interface Session
      Parameters:
      packet -
    • writeFromUserCode

      public abstract void writeFromUserCode(WriteMessage message)
    • isLoopbackConnection

      public final boolean isLoopbackConnection()
      Description copied from interface: Session
      return true if it is a loopback connection
      Specified by:
      isLoopbackConnection in interface Session
      Returns:
    • isUseBlockingWrite

      public boolean isUseBlockingWrite()
      Description copied from interface: Session
      Return true if using blocking write
      Specified by:
      isUseBlockingWrite in interface Session
      Returns:
    • setUseBlockingWrite

      public void setUseBlockingWrite(boolean useBlockingWrite)
      Description copied from interface: Session
      Set if using blocking write
      Specified by:
      setUseBlockingWrite in interface Session
      Parameters:
      useBlockingWrite -
    • isUseBlockingRead

      public boolean isUseBlockingRead()
      Description copied from interface: Session
      Return true if using blocking read
      Specified by:
      isUseBlockingRead in interface Session
      Returns:
    • setUseBlockingRead

      public void setUseBlockingRead(boolean useBlockingRead)
      Specified by:
      setUseBlockingRead in interface Session
    • clearWriteQueue

      public void clearWriteQueue()
    • isExpired

      public boolean isExpired()
      Description copied from interface: Session
      Return true if session is expired,session is expired beacause you set the sessionTimeout,if since session's last operation form now is over this vlaue,isExpired return true,and Handler.onExpired() will be invoked.
      Specified by:
      isExpired in interface Session
      Returns:
    • isIdle

      public boolean isIdle()
      Description copied from interface: Session
      Check if session is idle
      Specified by:
      isIdle in interface Session
      Returns:
    • transferTo

      public long transferTo(long position, long count, FileChannel target) throws IOException
      Throws:
      IOException
    • transferFrom

      public long transferFrom(long position, long count, FileChannel source) throws IOException
      Throws:
      IOException
    • onCreated

      protected void onCreated()