public abstract class IoSession<T extends SocketContext> extends Object
| Modifier and Type | Class and Description |
|---|---|
class |
IoSession.State
会话状态管理
|
| Modifier and Type | Field and Description |
|---|---|
protected ByteBufferChannel |
readByteBufferChannel |
protected ByteBufferChannel |
sendByteBufferChannel |
| Modifier and Type | Method and Description |
|---|---|
void |
cancelIdle()
停止空闲事件触发
|
void |
checkIdle()
启动空闲事件触发
|
abstract boolean |
close()
关闭会话
|
boolean |
containAttribute(Object key)
检查会话参数是否存在
|
void |
enabledMessageSpliter(boolean useSpliter)
设置是否使用分割器读取
|
void |
flush()
推送缓冲区的数据到 socketChannel
|
Object |
getAttribute(Object key)
获取会话参数
|
Map<Object,Object> |
getAttributes()
获取全部会话参数
|
protected ArrayList<Object> |
getFlushedObjects() |
HeartBeat |
getHeartBeat()
获取心跳对象
|
int |
getIdleInterval()
获取空闲事件时间
|
MessageLoader |
getMessageLoader()
获取消息处理类
|
protected abstract MessageSplitter |
getMessagePartition()
获取消息分割处理类
|
ByteBufferChannel |
getReadByteBufferChannel()
获取接收的输出流
|
ByteBufferChannel |
getSendByteBufferChannel()
获取发送收的输出流
|
SSLParser |
getSSLParser()
获取 SSLParser
|
IoSession.State |
getState() |
abstract boolean |
isConnected()
会话是否连接
|
abstract boolean |
isOpen()
会话是否打开
|
abstract int |
loaclPort()
获取本地端口
|
abstract String |
localAddress()
获取本地 IP 地址
|
int |
read(ByteBuffer byteBuffer)
直接从缓冲区读取数据
|
protected abstract int |
read0(ByteBuffer buffer)
读取消息到缓冲区
|
abstract String |
remoteAddress()
获取对端 IP 地址
|
abstract int |
remotePort()
获取对端端口
|
void |
removeAttribute(Object key)
移除会话参数
|
int |
send(ByteBuffer buffer)
直接向缓冲区发送消息
注意直接调用不会触发 onSent 事件, 也不会经过任何过滤器
|
protected abstract int |
send0(ByteBuffer buffer)
发送消息
注意直接调用不会出发 onSent 事件
|
int |
sendByBuffer(ByteBuffer buffer)
发送消息到发送缓冲区
|
void |
setAttribute(Object key,
Object value)
设置会话参数
|
protected void |
setFlushedObjects(ArrayList<Object> flushedObjects) |
protected void |
setHeartBeat(HeartBeat heartBeat) |
void |
setIdleInterval(int idleInterval)
设置空闲事件时间
|
protected void |
setSSLParser(SSLParser sslParser)
获取 SSLParser
|
T |
socketContext()
获取 socket 连接上下文
|
Object |
syncRead()
同步读取消息
消息会经过 filter 的 decoder 函数处理后再返回
|
void |
syncSend(Object obj)
同步发送消息
消息会经过 filter 的 encoder 函数处理后再发送
|
abstract String |
toString() |
boolean |
wait(int waitTime)
等待所有处理都被处理完成
ByteBufferChannel.size() = 0时,或者超时后退出
|
protected ByteBufferChannel readByteBufferChannel
protected ByteBufferChannel sendByteBufferChannel
public IoSession(T socketContext)
socketContext - socketContext对象public HeartBeat getHeartBeat()
protected void setHeartBeat(HeartBeat heartBeat)
public IoSession.State getState()
public void checkIdle()
public void cancelIdle()
public int getIdleInterval()
public void setIdleInterval(int idleInterval)
idleInterval - 空闲事件时间public ByteBufferChannel getReadByteBufferChannel()
public ByteBufferChannel getSendByteBufferChannel()
public SSLParser getSSLParser()
protected void setSSLParser(SSLParser sslParser)
sslParser - SSL解析对象public void setAttribute(Object key, Object value)
key - 参数名value - 参数对象public void removeAttribute(Object key)
key - 参数名public boolean containAttribute(Object key)
key - 参数名public abstract String localAddress()
public abstract int loaclPort()
public abstract String remoteAddress()
public abstract int remotePort()
public T socketContext()
protected abstract int read0(ByteBuffer buffer) throws IOException
buffer - 接收数据的缓冲区IOException - IO 异常public int read(ByteBuffer byteBuffer) throws IOException
byteBuffer - 字节缓冲对象ByteBuffer,读取 前需要使用 enabledMessageSpliter(false) 停止分割器的工作,除非有特殊的需求.IOException - IO异常public Object syncRead() throws ReadMessageException
ReadMessageException - 读取消息异常protected abstract int send0(ByteBuffer buffer) throws IOException
buffer - 发送缓冲区IOException - IO 异常public int sendByBuffer(ByteBuffer buffer)
buffer - 发送到缓冲区的 ByteBuffer 对象public void syncSend(Object obj) throws SendMessageException
obj - 要发送的对象SendMessageException - 消息发送异常public int send(ByteBuffer buffer)
buffer - byte缓冲区public void flush()
public MessageLoader getMessageLoader()
protected abstract MessageSplitter getMessagePartition()
public void enabledMessageSpliter(boolean useSpliter)
useSpliter - true 使用分割器读取,false 不使用分割器读取,且不会出发 onRecive 事件public abstract boolean isConnected()
public abstract boolean isOpen()
public boolean wait(int waitTime)
waitTime - 超时事件public abstract boolean close()
Copyright © 2019 Voovan. All rights reserved.