@Override public void resetReaderIndex() { buffer.resetReaderIndex(); }
@Override public void resetReaderIndex() { buffer.resetReaderIndex(); }
@Override public void reset() throws IOException { buffer.resetReaderIndex(); }
public void resetReaderIndex() { buf().resetReaderIndex(); }
private boolean decodePackBody(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { if (buffer.readableBytes() < 4) { return false; } buffer.markReaderIndex(); int length = buffer.readInt(); if (buffer.readableBytes() < length) { buffer.resetReaderIndex(); return false; } ByteBuffer bb = ByteBuffer.allocate(length); buffer.readBytes(bb); bb.flip(); dataPack.getDatas().add(bb); return dataPack.getDatas().size()==listSize; }
private Object decodeV1(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { buffer.resetReaderIndex(); buffer.skipBytes(2);// skip magic num byte messageType = (byte) buffer.readShort(); long requestId = buffer.readLong(); int dataLength = buffer.readInt(); // FIXME 如果dataLength过大,可能导致问题 if (buffer.readableBytes() < dataLength) { buffer.resetReaderIndex(); return null; } checkMaxContext(dataLength, ctx, channel, messageType == MotanConstants.FLAG_REQUEST, requestId); byte[] data = new byte[dataLength]; buffer.readBytes(data); return decode(data, channel, messageType == MotanConstants.FLAG_REQUEST, requestId); }
private Object decodeV2(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { buffer.resetReaderIndex(); if (buffer.readableBytes() < 21) { return null; size += metasize; if (buffer.readableBytes() < metasize) { buffer.resetReaderIndex(); return null; buffer.resetReaderIndex(); return null; size += bodysize; if (buffer.readableBytes() < bodysize) { buffer.resetReaderIndex(); return null; buffer.resetReaderIndex(); buffer.readBytes(data); return decode(data, channel, isRequest, requestId);
@Override protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { buffer.markReaderIndex(); final byte[] buf = new byte[5]; for (int i = 0; i < buf.length; i ++) { if (!buffer.readable()) { buffer.resetReaderIndex(); return null; } buf[i] = buffer.readByte(); if (buf[i] >= 0) { int length = CodedInputStream.newInstance(buf, 0, i + 1).readRawVarint32(); if (length < 0) { throw new CorruptedFrameException("negative length: " + length); } if (buffer.readableBytes() < length) { buffer.resetReaderIndex(); return null; } else { return buffer.readBytes(length); } } } // Couldn't find the byte whose MSB is off. throw new CorruptedFrameException("length wider than 32-bit"); } }
if (available < 12) { buf.resetReaderIndex(); return null; buf.resetReaderIndex(); if (available < length) { buf.resetReaderIndex();
buffer.resetReaderIndex(); throw new MotanFrameworkException("NettyDecoder transport header not support, type: " + type);
@Override public void resetReaderIndex() { buffer.resetReaderIndex(); }
@Override public void resetReaderIndex() { buffer.resetReaderIndex(); hasMarkedReaderIndex = false; }
@Override public ChannelBuffer encode() { if(encoded) { // in case used multiple times e.g. broadcast data.resetReaderIndex(); } else { encoded = true; } return data; }
@Override public void resetReaderIndex() { buffer.resetReaderIndex(); }
public void resetReaderIndex() { buffer.resetReaderIndex(); }
@Override public void resetReaderIndex() { buffer.resetReaderIndex(); }
@Override public void reset() throws IOException { buffer.resetReaderIndex(); }
@Override public ChannelBuffer encode() { if(encoded) { // in case used multiple times e.g. broadcast data.resetReaderIndex(); } else { encoded = true; } return data; }
/** * Ensures that at least a {@code nbytes} are readable from the given buffer. * If there aren't enough bytes in the buffer this will raise an exception * and cause the {@link ReplayingDecoder} to undo whatever we did thus far * so we can wait until we read more from the socket. * @param buf Buffer to check. * @param nbytes Number of bytes desired. */ private static void ensureReadable(final ChannelBuffer buf, final int nbytes) { buf.markReaderIndex(); buf.skipBytes(nbytes); buf.resetReaderIndex(); }
@Override public void writeTo(OutputStream os) throws IOException { // must remember current index so we can reset back to it after the copy int idx = buffer.readerIndex(); try { buffer.resetReaderIndex(); IOHelper.copy(this, os); } finally { buffer.readerIndex(idx); } }