當前位置: 首頁>>代碼示例>>Java>>正文


Java ByteBuf.discardReadBytes方法代碼示例

本文整理匯總了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();
}
 
開發者ID:subalakr,項目名稱:yasjl,代碼行數:21,代碼來源:QueryResponseByteBufJsonParserTest.java

示例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();
                }

            }
        }
    };
}
 
開發者ID:DevOpsStudio,項目名稱:Re-Collector,代碼行數:37,代碼來源:NewlineChunkSplitter.java

示例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);
        }
    };
}
 
開發者ID:DevOpsStudio,項目名稱:Re-Collector,代碼行數:63,代碼來源:PatternChunkSplitter.java


注:本文中的io.netty.buffer.ByteBuf.discardReadBytes方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。