【HDFS】Hadoop-RPC:什么情况下Responder#processResponse里channelWrite之后第二个参数ByteBuffer还有remaining

本文我们聚焦于Responder#processResponse方法,弄懂它里面的代码逻辑。

我在看这个方法的源码时,开始是有不解的。不解的原因如下,见代码注释:

          //
          // Send as much data as we can in the non-blocking fashion
          // 不解的位置:这个方法里去不断写channel。但是为什么后面会有if-else分支进行call.rpcResponse这个ByteBuffer
          // 是否还有remaining的判断呢?
          int numBytes = channelWrite(channel, call.rpcResponse);
          if (numBytes 

你可能感兴趣的:(HDFS全方位实战,hadoop,hdfs,rpc)