程序包 qhs.interfaces

接口 SocketChannelRW


  • public interface SocketChannelRW
    SocketChannelRW接口用于实现套接字通道读写器。
    • 方法详细资料

      • 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