public DefaultChannelPipeline(Channel channel) { if (channel == null) { throw new NullPointerException("channel"); } this.channel = channel; tail = new DefaultChannelHandlerContext(this, null, generateName(TAIL_HANDLER), TAIL_HANDLER); HeadHandler headHandler; switch (channel.metadata().bufferType()) { case BYTE: headHandler = new ByteHeadHandler(); break; case MESSAGE: headHandler = new MessageHeadHandler(); break; default: throw new Error("unknown buffer type: " + channel.metadata().bufferType()); } head = new DefaultChannelHandlerContext(this, null, generateName(headHandler), headHandler, true); head.next = tail; tail.prev = head; unsafe = channel.unsafe(); }