@Override public IoBufferEx encode(IoBufferAllocatorEx<?> allocator, WsMessage message, int flags) { return doEncode(allocator, flags, message); } }
protected IoBufferEx doEncode(IoBufferAllocatorEx<?> allocator, int flags, WsMessage message) { switch (message.getKind()) { case CONTINUATION: return doContinuationEncode(allocator, flags, message); case BINARY: { return doBinaryEncode(allocator, flags, message); } case TEXT: { return doTextEncode(allocator, flags, message); } case PING: { return doBinaryEncode(allocator, flags, message); } case PONG: { return doBinaryEncode(allocator, flags, message); } case CLOSE: { return doCloseEncode(allocator, flags, (WsCloseMessage)message); } default: throw new IllegalStateException("Unrecognized frame type: " + message.getKind()); } }
@Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { WsMessage wsMessage = (WsMessage) message; if (wsMessage.hasCache()) { IoBufferEx buf = cachingEncoder.encode(encoder, wsMessage, allocator, FLAG_SHARED | FLAG_ZERO_COPY); out.write(buf); } else { IoBufferEx buf = doEncode(allocator, FLAG_ZERO_COPY, wsMessage); out.write(buf); } }