本文整理匯總了Java中io.netty.buffer.ByteBuf.discardReadBytes方法的典型用法代碼示例。如果您正苦於以下問題:Java ByteBuf.discardReadBytes方法的具體用法?Java ByteBuf.discardReadBytes怎麽用?Java ByteBuf.discardReadBytes使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類io.netty.buffer.ByteBuf
的用法示例。
在下文中一共展示了ByteBuf.discardReadBytes方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: parseValue
import io.netty.buffer.ByteBuf; //導入方法依賴的package包/類
private String parseValue(String path, String file) throws Exception {
final StringBuilder sb = new StringBuilder();
ByteBuf inBuf = Unpooled.buffer();
JsonPointer[] jsonPointers = {
new JsonPointer("/" + path, new JsonPointerCB1() {
public void call(ByteBuf buf) {
sb.append(buf.toString(Charset.defaultCharset()));
buf.release();
}
}),
};
String response = getResource(file);
parser.initialize(inBuf, jsonPointers);
inBuf.writeBytes(response.getBytes());
parser.parse();
inBuf.discardReadBytes();
inBuf.release();
return sb.toString();
}
示例2: split
import io.netty.buffer.ByteBuf; //導入方法依賴的package包/類
@Override
public Iterable<String> split(final ByteBuf buffer, final Charset charset, final boolean includeRemainingData) {
return () -> new AbstractIterator<String>() {
@Override
protected String computeNext() {
ByteBuf fullLine = null;
try {
if (!buffer.isReadable()) {
return endOfData();
}
final int i = buffer.forEachByte(ByteBufProcessor.FIND_CRLF);
if (i == -1) {
if (includeRemainingData) {
final ByteBuf remaining = buffer.readBytes(buffer.readableBytes());
return remaining.toString(charset);
} else {
return endOfData();
}
}
fullLine = buffer.readBytes(i);
// Strip the \r/\n bytes from the buffer.
final byte readByte = buffer.readByte(); // the \r or \n byte
if (readByte == '\r') {
buffer.readByte(); // the \n byte if previous was \r
}
return fullLine.toString(charset);
} finally {
buffer.discardReadBytes();
if (fullLine != null) {
fullLine.release();
}
}
}
};
}
示例3: split
import io.netty.buffer.ByteBuf; //導入方法依賴的package包/類
@Override
public Iterable<String> split(final ByteBuf buffer, final Charset charset, final boolean includeRemainingData) {
return () -> new AbstractIterator<String>() {
// TODO Might throw an exception if multibyte charset is used and buffer is not complete.
// Use CharsetDecoder to create a CharBuffer and match on that!
private final String inputAsString = buffer.toString(charset);
final Matcher matcher = pattern.matcher(inputAsString);
private int positionInString = 0;
@Override
protected String computeNext() {
try {
if (!buffer.isReadable()) {
return endOfData();
}
if (matcher.find()) {
int firstByte = matcher.start();
if (firstByte == 0) {
// advance further, the buffer begins with our pattern.
if (matcher.find()) {
firstByte = matcher.start();
} else {
if (!includeRemainingData) {
// couldn't find the end of the entry (i.e. there wasn't a next line yet)
return endOfData();
} else {
// couldn't find another line, but we are asked to finish up, include everything that remains
return getRemainingContent();
}
}
}
if (firstByte == 0) {
// still haven't found a non-zero length string, keep waiting for more data.
return endOfData();
}
final String substring = inputAsString.substring(positionInString, firstByte);
positionInString = firstByte;
buffer.skipBytes(substring.getBytes(charset).length); // TODO performance
return substring;
} else {
if (includeRemainingData) {
return getRemainingContent();
}
return endOfData();
}
} catch (IllegalStateException e) {
// the cause contains the CharacterCodingException from the ChannelBuffer.toString() methods
// this usually means the buffer ended with an incomplete encoding of a unicode character.
// WHY U SO SUCK CHARACTER ENCODINGS?
// we need to wait until more data is available
return endOfData();
} finally {
buffer.discardReadBytes();
}
}
private String getRemainingContent() {
final ByteBuf channelBuffer = buffer.readBytes(buffer.readableBytes());
return channelBuffer.toString(charset);
}
};
}