(AsyncSocket socket)
| 54 | } |
| 55 | |
| 56 | @Override |
| 57 | public boolean Send(AsyncSocket socket) { |
| 58 | // 1. |
| 59 | // 通过原始raft连接方式发送请求。 |
| 60 | // 由于每次发送需要新的rpc.sessionId,所以这里新建了一个桥接类发送, |
| 61 | // 并不会真正发送原始的RaftRpc。 |
| 62 | // 2. |
| 63 | // 通过Proxy发送的时候,ProxyRequest已经是一个新的请求,所有的dispatch特别处理, |
| 64 | // 不会使用这个方法发送请求了。 |
| 65 | // 3. |
| 66 | // Rpc.SendResult 针对上面两个发送方式,也有两个路径。 |
| 67 | // 3.1 原始方式通过SessionId找到本地存根并最终找到本RaftRpc.ResponseHandle把结果派发出去。 |
| 68 | // 3.2 Proxy方式由ProxyRequest的嵌套ResponseHandle派发出去。其中SendResult需要拦截。see 本类。 |
| 69 | var bridge = new RaftRpcBridge<>(this); |
| 70 | bridge.Argument = Argument; |
| 71 | bridge.setCreateTime(createTime); |
| 72 | bridge.setUnique(unique); |
| 73 | bridge.setResultCode(this.getResultCode()); |
| 74 | return bridge.Send(socket, getResponseHandle(), getTimeout()); |
| 75 | } |
| 76 | |
| 77 | @Override |
| 78 | public void encode(ByteBuffer bb) { |
no test coverage detected