程序包 qhs.interfaces
接口 SocketChannelRW
-
public interface SocketChannelRWSocketChannelRW接口用于实现套接字通道读写器。
-
-
方法概要
所有方法 实例方法 抽象方法 修饰符和类型 方法 说明 intread(Connection conn, ReadableDataDetecter rdd, java.nio.ByteBuffer buffer, java.nio.channels.SocketChannel sc)从套接字通道读取来自客户端的数据。intwrite(Connection conn, ReadableDataDetecter rdd, java.nio.ByteBuffer buffer, java.nio.channels.SocketChannel sc)对套接字通道写入数据从而把数据发送给客户端。
-
-
-
方法详细资料
-
read
int read(Connection conn, ReadableDataDetecter rdd, java.nio.ByteBuffer buffer, java.nio.channels.SocketChannel sc) throws java.lang.Throwable
从套接字通道读取来自客户端的数据。读取得到的数据必须缓存在buffer参数,qhs分析缓存在buffer参数上的数据, 判断缓存在buffer参数上的数据是否符合HTTP/2规定。要是不符合HTTP/2规定,qhs就关闭http连接(或者套接字通道)。 如果从套接字通道读取的数据是密文数据或者是经过编码的数据,用户代码必须解密数据或者解码数据还原得出明文数据, 并且把明文数据缓存在buffer参数。- 参数:
conn- 底层引用sc参数值的http连接。rdd- 可读数据检测器,用于检测在套接字通道上是否存在有数据可供读取。buffer- 用于缓存HTTP/2明文数据的缓存区。sc- 套接字通道。- 返回:
- 返回值等于缓存在buffer参数上的HTTP/2明文数据的长度,表示存在有待分析的明文数据。 返回值小于1,表示出错。
- 抛出:
java.lang.Throwable
-
write
int write(Connection conn, ReadableDataDetecter rdd, java.nio.ByteBuffer buffer, java.nio.channels.SocketChannel sc) throws java.lang.Throwable
对套接字通道写入数据从而把数据发送给客户端。本方法把缓存在buffer参数上的数据写入到套接字通道。缓存在buffer 参数上的数据是qhs生成的并且符合HTTP/2规定的明文数据。这明文数据是SETTINGS、HEADERS、DATA、WINDOW_UPDATE等 各种类型帧的组合。用户代码可以对缓存在buffer参数上的数据首先进行加密或编码,然后把密文数据或者编码结果写入到 套接字通道。- 参数:
conn- 底层引用sc参数值的http连接。rdd- 可读数据检测器,用于检测在套接字通道上是否存在有数据可供读取。buffer- 用于缓存HTTP/2明文数据的缓存区。sc- 套接字通道。- 返回:
- 返回值等于缓存在buffer参数上的HTTP/2明文数据的长度,表示正确发送数据。 返回值等于其它值,表示出错。
- 抛出:
java.lang.Throwable
-
-