@Override public ByteBuf writeMediumLE(int value) { buf.writeMedium(value); return this; }
/** * Writes a big-endian 24-bit medium integer to the buffer. */ @SuppressWarnings("deprecation") public static ByteBuf writeMediumBE(ByteBuf buf, int mediumValue) { return buf.order() == ByteOrder.BIG_ENDIAN? buf.writeMedium(mediumValue) : buf.writeMediumLE(mediumValue); }
@Override public ByteBuf writeMedium(int value) { buf.writeMedium(value); return this; }
@Override public ByteBuf writeMedium(int value) { buf.writeMedium(ByteBufUtil.swapMedium(value)); return this; }
/** * Creates a new 3-byte big-endian buffer that holds the specified 24-bit integer. */ public static ByteBuf copyMedium(int value) { ByteBuf buf = buffer(3); buf.writeMedium(value); return buf; }
/** * Create a new big-endian buffer that holds a sequence of the specified 24-bit integers. */ public static ByteBuf copyMedium(int... values) { if (values == null || values.length == 0) { return EMPTY_BUFFER; } ByteBuf buffer = buffer(values.length * 3); for (int v: values) { buffer.writeMedium(v); } return buffer; }
private void writeControlFrameHeader(ByteBuf buffer, int type, byte flags, int length) { buffer.writeShort(version | 0x8000); buffer.writeShort(type); buffer.writeByte(flags); buffer.writeMedium(length); }
static void writeFrameHeaderInternal(ByteBuf out, int payloadLength, byte type, Http2Flags flags, int streamId) { out.writeMedium(payloadLength); out.writeByte(type); out.writeByte(flags.value()); out.writeInt(streamId); }
/** * Writes any remaining bits to the output {@link ByteBuf}, * zero padding to a whole byte as required. */ void flush(ByteBuf out) { final int bitCount = this.bitCount; if (bitCount > 0) { final long bitBuffer = this.bitBuffer; final int shiftToRight = 64 - bitCount; if (bitCount <= 8) { out.writeByte((int) (bitBuffer >>> shiftToRight << 8 - bitCount)); } else if (bitCount <= 16) { out.writeShort((int) (bitBuffer >>> shiftToRight << 16 - bitCount)); } else if (bitCount <= 24) { out.writeMedium((int) (bitBuffer >>> shiftToRight << 24 - bitCount)); } else { out.writeInt((int) (bitBuffer >>> shiftToRight << 32 - bitCount)); } } } }
"length does not fit into a medium integer: " + length); out.add(ctx.alloc().buffer(3).order(byteOrder).writeMedium(length)); break; case 4:
public ByteBuf encodeDataFrame(ByteBufAllocator allocator, int streamId, boolean last, ByteBuf data) { byte flags = last ? SPDY_DATA_FLAG_FIN : 0; int length = data.readableBytes(); ByteBuf frame = allocator.ioBuffer(SPDY_HEADER_SIZE + length).order(ByteOrder.BIG_ENDIAN); frame.writeInt(streamId & 0x7FFFFFFF); frame.writeByte(flags); frame.writeMedium(length); frame.writeBytes(data, data.readerIndex(), length); return frame; }
public ByteBuf encodeSettingsFrame(ByteBufAllocator allocator, SpdySettingsFrame spdySettingsFrame) { Set<Integer> ids = spdySettingsFrame.ids(); int numSettings = ids.size(); byte flags = spdySettingsFrame.clearPreviouslyPersistedSettings() ? SPDY_SETTINGS_CLEAR : 0; int length = 4 + 8 * numSettings; ByteBuf frame = allocator.ioBuffer(SPDY_HEADER_SIZE + length).order(ByteOrder.BIG_ENDIAN); writeControlFrameHeader(frame, SPDY_SETTINGS_FRAME, flags, length); frame.writeInt(numSettings); for (Integer id : ids) { flags = 0; if (spdySettingsFrame.isPersistValue(id)) { flags |= SPDY_SETTINGS_PERSIST_VALUE; } if (spdySettingsFrame.isPersisted(id)) { flags |= SPDY_SETTINGS_PERSISTED; } frame.writeByte(flags); frame.writeMedium(id); frame.writeInt(spdySettingsFrame.getValue(id)); } return frame; }
case INIT: out.ensureWritable(4); out.writeMedium(MAGIC_NUMBER); out.writeByte('0' + streamBlockSize / BASE_BLOCK_SIZE); currentState = State.INIT_BLOCK;