Class PacketLineIn


  • public class PacketLineIn
    extends java.lang.Object
    Read Git style pkt-line formatting from an input stream.

    This class is not thread safe and may issue multiple reads to the underlying stream for each method call made.

    This class performs no buffering on its own. This makes it suitable to interleave reads performed by this class with reads performed directly against the underlying InputStream.

    • Field Detail

      • log

        private static final org.slf4j.Logger log
      • END

        @Deprecated
        public static final java.lang.String END
        Deprecated.
        Callers should use isEnd(String) to check if a string is the end marker, or readStrings() to iterate over all strings in the input stream until the marker is reached.
        Magic return from readString() when a flush packet is found.
      • DELIM

        @Deprecated
        public static final java.lang.String DELIM
        Deprecated.
        Callers should use isDelimiter(String) to check if a string is the delimiter.
        Magic return from readString() when a delim packet is found.
        Since:
        5.0
      • lineBuffer

        private final byte[] lineBuffer
      • in

        private final java.io.InputStream in
      • limit

        private long limit
    • Constructor Detail

      • PacketLineIn

        public PacketLineIn​(java.io.InputStream in)
        Create a new packet line reader.
        Parameters:
        in - the input stream to consume.
      • PacketLineIn

        public PacketLineIn​(java.io.InputStream in,
                            long limit)
        Create a new packet line reader.
        Parameters:
        in - the input stream to consume.
        limit - bytes to read from the input; unlimited if set to 0.
        Since:
        4.7
    • Method Detail

      • readString

        public java.lang.String readString()
                                    throws java.io.IOException
        Read a single UTF-8 encoded string packet from the input stream.

        If the string ends with an LF, it will be removed before returning the value to the caller. If this automatic trimming behavior is not desired, use readStringRaw() instead.

        Returns:
        the string. END if the string was the magic flush packet, DELIM if the string was the magic DELIM packet.
        Throws:
        java.io.IOException - the stream cannot be read.
      • readStrings

        public PacketLineIn.PacketLineInIterator readStrings()
                                                      throws java.io.IOException
        Get an iterator to read strings from the input stream.
        Returns:
        an iterator that calls readString() until END is encountered.
        Throws:
        java.io.IOException - on failure to read the initial packet line.
        Since:
        5.4
      • readStringRaw

        public java.lang.String readStringRaw()
                                       throws java.io.IOException
        Read a single UTF-8 encoded string packet from the input stream.

        Unlike readString() a trailing LF will be retained.

        Returns:
        the string. END if the string was the magic flush packet.
        Throws:
        java.io.IOException - the stream cannot be read.
      • isDelimiter

        public static boolean isDelimiter​(java.lang.String s)
        Check if a string is the delimiter marker.
        Parameters:
        s - the string to check
        Returns:
        true if the given string is DELIM, otherwise false.
        Since:
        5.4
      • delimiter

        static java.lang.String delimiter()
        Get the delimiter marker.

        Intended for use only in tests.

        Returns:
        The delimiter marker.
      • end

        static java.lang.String end()
        Get the end marker.

        Intended for use only in tests.

        Returns:
        The end marker.
      • isEnd

        public static boolean isEnd​(java.lang.String s)
        Check if a string is the packet end marker.
        Parameters:
        s - the string to check
        Returns:
        true if the given string is END, otherwise false.
        Since:
        5.4
      • discardUntilEnd

        void discardUntilEnd()
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • readLength

        int readLength()
                throws java.io.IOException
        Throws:
        java.io.IOException
      • invalidHeader

        private java.io.IOException invalidHeader()
      • invalidHeader

        private java.io.IOException invalidHeader​(java.lang.Throwable cause)