BlockReceiver#receivePacket:
接收并处理一个packet,这个packet可能包含多个chunks。
返回值是packet的数据字节数。
receivePacket这个方法的代码有250+行。非常长。需要我们去一点一点拆解:
private int receivePacket() throws IOException {
// 从输入流in里读下一个packet。这个in是上游。receiveNextPacket也是核心方法,可以先跳转到文末看这个方法的解析,看完再回来。
// 现在我们只需要知道receive packet之后把packet放到curPacketBuf这个ByteBuffer里