E.
E.E.
E. IoBuffer order(ByteOrder bo)
IoBuffer order(ByteOrder bo)IoBuffer order(ByteOrder bo)
IoBuffer order(ByteOrder bo):
::
:
这个方法设置是 Big Endian 还是 Little Endian,JAVA 中默认是 Big Endian,C++和其他
语言一般是 Little Endian。
F.
F.F.
F. IoBuffer asReadOnlyBuffer()
IoBuffer asReadOnlyBuffer()IoBuffer asReadOnlyBuffer()
IoBuffer asReadOnlyBuffer():
::
:
这个方法设置 IoBuffer 为只读的。
G.
G.G.
G. B
BB
Boolean pr
oolean proolean pr
oolean prefixedDataAvailable(
efixedDataAvailable(efixedDataAvailable(
efixedDataAvailable(int prefixLength,int maxDataLength
int prefixLength,int maxDataLengthint prefixLength,int maxDataLength
int prefixLength,int maxDataLength)
))
):
::
:
这个方法用于数据的最开始的 1、2、4 个字节表示的是数据的长度的情况,prefixLentgh
表示这段数据的前几个字节(只能是 1、2、4 的其中一个)的代表的是这段数据的长度,
maxDataLength 表 示 最 多 要 读 取 的 字 节 数 。 返 回 结 果 依 赖 于 等 式
remaining()-prefixLength>=maxDataLength,也就是总的数据-表示长度的字节,剩下的字
节数要比打算读取的字节数大或者相等。
H.
H.H.
H. String getPrefixedString(int prefixLength,CharsetDecoder decoder)
String getPrefixedString(int prefixLength,CharsetDecoder decoder)String getPrefixedString(int prefixLength,CharsetDecoder decoder)
String getPrefixedString(int prefixLength,CharsetDecoder decoder):
::
:
如果上面的方法返回 true,那么这个方法将开始读取表示长度的字节之后的数据,注意要
保持这两个方法的 prefixLength 的值是一样的。
G、H 两个方法在后面讲到的 PrefixedStringDecoder 中的内部实现使用。
IoBuffer 剩余的方法与 ByteBuffer 都是差不多的,额外增加了一些便利的操作方法,例如:
IoBuffer
IoBuffer IoBuffer
IoBuffer putString(Strin
putString(StrinputString(Strin
putString(String value,
g value,g value,
g value,Charset
CharsetCharset
CharsetEncoder encoder)
Encoder encoder)Encoder encoder)
Encoder encoder)可以方便的以指定的编码方
式存储字符串、InputStream asInputStream()
InputStream asInputStream()InputStream asInputStream()
InputStream asInputStream()方法从 IoBuffer 剩余的未读的数据中转为
输入流等。
_______________________________________________________________________________
(8.)
(8.)(8.)
(8.)IoFuture
IoFutureIoFuture
IoFuture:
::
:
在 Mina 的很多操作中,你会看到返回值是 XXXFuture,实际上他们都是 IoFuture 的子类,
看到这样的返回值,这个方法就说明是异步执行的,主要的子类有 ConnectFuture、
CloseFuture 、 ReadFuture 、 WriteFuture 。 这 个 接 口 的 大 部 分 操 作 都 和
java.util.concurrent.Future 接口是类似的,譬如:await()、awaitUninterruptibly()
等,一般我们常用 awaitUninterruptibly()方法可以等待异步执行的结果返回。
这个接口有如下常用的方法:
A.
A.A.
A. IoFuture addListener(IoFutureListener<?> list
IoFuture addListener(IoFutureListener<?> listIoFuture addListener(IoFutureListener<?> list
IoFuture addListener(IoFutureListener<?> listener)
ener)ener)
ener):
::
:
这 个 方 法 用 于 添 加 一 个 监 听 器 , 在 异 步 执 行 的 结 果 返 回 时 监 听 器 中 的 回 调 方 法
operationComplete(IoFuture future),也就是说,这是替代 awaitUninterruptibly()方
法另一种等待异步执行结果的方法,它的好处是不会产生阻塞。
B.
B.B.
B. IoFuture removeListener(IoFuture
IoFuture removeListener(IoFutureIoFuture removeListener(IoFuture
IoFuture removeListener(IoFutureListener<?> listener
Listener<?> listenerListener<?> listener
Listener<?> listener)
))
):
::
:
这个方法用于移除指定的监听器。
C.
C.C.
C. IoSession getSession()
IoSession getSession()IoSession getSession()
IoSession getSession():
::
:
这个方法返回当前的 IoSession。