public abstract class NSHeadRpcProtocol extends AbstractProtocol
NSHead| 限定符和类型 | 字段和说明 |
|---|---|
protected String |
encoding |
notEnoughDataException| 构造器和说明 |
|---|
NSHeadRpcProtocol(String encoding) |
| 限定符和类型 | 方法和说明 |
|---|---|
NSHeadPacket |
decode(io.netty.channel.ChannelHandlerContext ctx,
DynamicCompositeByteBuf in,
boolean isDecodingRequest)
客户端/服务端解析请求包成header+body buffer
|
abstract Object |
decodeBody(io.netty.buffer.ByteBuf bodyBuf,
RpcMethodInfo rpcMethodInfo) |
Request |
decodeRequest(Object packet)
服务端反序列化rpc请求
|
Response |
decodeResponse(Object in,
io.netty.channel.ChannelHandlerContext ctx)
客户端反序列化rpc响应
|
abstract byte[] |
encodeBody(Object body,
RpcMethodInfo rpcMethodInfo) |
io.netty.buffer.ByteBuf |
encodeRequest(Request request)
客户端序列化请求对象
|
io.netty.buffer.ByteBuf |
encodeResponse(Request request,
Response response)
服务端序列化返回结果。
|
boolean |
returnChannelBeforeResponse()
连接被归还入池的时机
|
afterResponseSent, beforeRequestSent, createRequest, createResponse, getRequest, getResponse, isCoexistenceprotected String encoding
public NSHeadRpcProtocol(String encoding)
public io.netty.buffer.ByteBuf encodeRequest(Request request) throws Exception
Protocolrequest - 待发送给服务端的对象Exception - 序列化异常public Response decodeResponse(Object in, io.netty.channel.ChannelHandlerContext ctx) throws Exception
Protocolin - header & body的bufctx - netty channel contextException - 反序列化异常public io.netty.buffer.ByteBuf encodeResponse(Request request, Response response) throws Exception
Protocolresponse - 服务端要返回给客户端的对象Exception - 序列化异常public Request decodeRequest(Object packet) throws Exception
Protocolpacket - header & body的bufExceptionpublic boolean returnChannelBeforeResponse()
ProtocolreturnChannelBeforeResponse 在接口中 ProtocolreturnChannelBeforeResponse 在类中 AbstractProtocolpublic NSHeadPacket decode(io.netty.channel.ChannelHandlerContext ctx, DynamicCompositeByteBuf in, boolean isDecodingRequest) throws BadSchemaException, TooBigDataException, NotEnoughDataException
Protocolin - 输入byte bufBadSchemaException - header格式不对TooBigDataException - body太大NotEnoughDataException - 可读长度不够,由于粘包拆包问题。public abstract byte[] encodeBody(Object body, RpcMethodInfo rpcMethodInfo)
public abstract Object decodeBody(io.netty.buffer.ByteBuf bodyBuf, RpcMethodInfo rpcMethodInfo)
Copyright © 2019 Baidu, Inc.. All rights reserved.