565行代码,感觉是一个大工程呀~
首先是MERGE_CUMULATOR和COMPOSITE_CUMULATOR两个成员变量,按照JavaDoc上的说明如下:
-
MERGE_CUMULATOR:通过使用内存副本将 ByteBuf 合并为一个 ByteBuf 来累积 ByteBuf。
-
COMPOSITE_CUMULATOR:通过将 ByteBuf 添加到 CompositeByteBuf 来累积 ByteBuf,因此尽可能不要进行内存复制。 请注意, CompositeByteBuf 使用更复杂的索引实现,因此根据您的用例和解码器实现,这可能会比使用 MERGE_CUMULATOR 慢。
我只看了一丢丢,但是我有个大胆的想法,能不能使用Disruptor代替掉CodecOutputList,那这样的话就意味着我们可能需要自行管理我们的消费者线程了。
(最后放弃这个想法了,因为很多东西还没有吃透,不想瞎搞)
ByteToMessageDecoder有点复杂,但是现阶段没有必要将他们全部吃透,如果我真的要用的化,我觉得我可能大概率是会重写这个东东的。