BufferUtil.flipToFill(payload); writeChannelId(payload,0); // control channel b |= (op.getEncoding() & 0x03); // enc writeChannelId(payload,op.getChannelId()); write139Buffer(payload,op.getHandshake()); break; b |= (op.getEncoding() & 0x03); // enc writeChannelId(payload,op.getChannelId()); if (op.getHandshake() != null) b |= (byte)(op.getRsv() & 0x1F); // rsv writeChannelId(payload,op.getChannelId()); write139Buffer(payload,op.asReasonBuffer()); break; b |= (byte)(op.getRsv() & 0x1F); // rsv writeChannelId(payload,op.getChannelId()); write139Size(payload,op.getSendQuotaSize()); break;
BufferUtil.flipToFill(payload); writeChannelId(payload,0); // control channel b |= (op.getEncoding() & 0x03); // enc writeChannelId(payload,op.getChannelId()); write139Buffer(payload,op.getHandshake()); break; b |= (op.getEncoding() & 0x03); // enc writeChannelId(payload,op.getChannelId()); if (op.getHandshake() != null) b |= (byte)(op.getRsv() & 0x1F); // rsv writeChannelId(payload,op.getChannelId()); write139Buffer(payload,op.asReasonBuffer()); break; b |= (byte)(op.getRsv() & 0x1F); // rsv writeChannelId(payload,op.getChannelId()); write139Size(payload,op.getSendQuotaSize()); break;
public void generate(long channelId, Frame frame, WriteCallback callback) { ByteBuffer muxPayload = bufferPool.acquire(frame.getPayloadLength() + DATA_FRAME_OVERHEAD,true); BufferUtil.flipToFill(muxPayload); // start building mux payload writeChannelId(muxPayload,channelId); byte b = (byte)(frame.isFin()?0x80:0x00); // fin b |= (byte)(frame.isRsv1()?0x40:0x00); // rsv1 b |= (byte)(frame.isRsv2()?0x20:0x00); // rsv2 b |= (byte)(frame.isRsv3()?0x10:0x00); // rsv3 b |= (byte)(frame.getType().getOpCode() & 0x0F); // opcode muxPayload.put(b); BufferUtil.put(frame.getPayload(),muxPayload); // build muxed frame WebSocketFrame muxFrame = WebSocketFrame.binary(); BufferUtil.flipToFlush(muxPayload,0); muxFrame.setPayload(muxPayload); // NOTE: the physical connection will handle masking rules for this frame. // release original buffer (no longer needed) bufferPool.release(frame.getPayload()); // send muxed frame down to the physical connection. outgoing.outgoingFrame(muxFrame,callback); }
public void generate(long channelId, Frame frame, WriteCallback callback) { ByteBuffer muxPayload = bufferPool.acquire(frame.getPayloadLength() + DATA_FRAME_OVERHEAD,true); BufferUtil.flipToFill(muxPayload); // start building mux payload writeChannelId(muxPayload,channelId); byte b = (byte)(frame.isFin()?0x80:0x00); // fin b |= (byte)(frame.isRsv1()?0x40:0x00); // rsv1 b |= (byte)(frame.isRsv2()?0x20:0x00); // rsv2 b |= (byte)(frame.isRsv3()?0x10:0x00); // rsv3 b |= (byte)(frame.getType().getOpCode() & 0x0F); // opcode muxPayload.put(b); BufferUtil.put(frame.getPayload(),muxPayload); // build muxed frame WebSocketFrame muxFrame = WebSocketFrame.binary(); BufferUtil.flipToFlush(muxPayload,0); muxFrame.setPayload(muxPayload); // NOTE: the physical connection will handle masking rules for this frame. // release original buffer (no longer needed) bufferPool.release(frame.getPayload()); // send muxed frame down to the physical connection. outgoing.outgoingFrame(muxFrame,callback); }