Home / Function/ findDelimiter() — netty Function Reference

findDelimiter() — netty Function Reference

Architecture documentation for the findDelimiter() function in HttpPostBodyUtil.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  cf225f0b_71a3_1bbc_7543_bb72e51e03b8["findDelimiter()"]
  d8fd760f_9426_5ef6_86a5_3c8c134ada4d["HttpPostBodyUtil"]
  cf225f0b_71a3_1bbc_7543_bb72e51e03b8 -->|defined in| d8fd760f_9426_5ef6_86a5_3c8c134ada4d
  style cf225f0b_71a3_1bbc_7543_bb72e51e03b8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostBodyUtil.java lines 220–268

    static int findDelimiter(ByteBuf buffer, int index, byte[] delimiter, boolean precededByLineBreak) {
        final int delimiterLength = delimiter.length;
        final int readerIndex = buffer.readerIndex();
        final int writerIndex = buffer.writerIndex();
        int toRead = writerIndex - index;
        int newOffset = index;
        boolean delimiterNotFound = true;
        while (delimiterNotFound && delimiterLength <= toRead) {
            // Find first position: delimiter
            int posDelimiter = buffer.bytesBefore(newOffset, toRead, delimiter[0]);
            if (posDelimiter < 0) {
                return -1;
            }
            newOffset += posDelimiter;
            toRead -= posDelimiter;
            // Now check for delimiter
            if (toRead >= delimiterLength) {
                delimiterNotFound = false;
                for (int i = 0; i < delimiterLength; i++) {
                    if (buffer.getByte(newOffset + i) != delimiter[i]) {
                        newOffset++;
                        toRead--;
                        delimiterNotFound = true;
                        break;
                    }
                }
            }
            if (!delimiterNotFound) {
                // Delimiter found, find if necessary: LF or CRLF
                if (precededByLineBreak && newOffset > readerIndex) {
                    if (buffer.getByte(newOffset - 1) == HttpConstants.LF) {
                        newOffset--;
                        // Check if CR before: not mandatory to be there
                        if (newOffset > readerIndex && buffer.getByte(newOffset - 1) == HttpConstants.CR) {
                            newOffset--;
                        }
                    } else {
                        // Delimiter with Line Break could be further: iterate after first char of delimiter
                        newOffset++;
                        toRead--;
                        delimiterNotFound = true;
                        continue;
                    }
                }
                return newOffset - readerIndex;
            }
        }
        return -1;
    }

Subdomains

Frequently Asked Questions

What does findDelimiter() do?
findDelimiter() is a function in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostBodyUtil.java.
Where is findDelimiter() defined?
findDelimiter() is defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostBodyUtil.java at line 220.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free