Class PacketLineIn

java.lang.Object
org.eclipse.jgit.transport.PacketLineIn

public class PacketLineIn extends 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 Details

    • log

      private static final org.slf4j.Logger log
    • END

      @Deprecated public static final 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 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 InputStream in
    • limit

      private long limit
  • Constructor Details

    • PacketLineIn

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

      public PacketLineIn(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 Details

    • parseACKv2

      static PacketLineIn.AckNackResult parseACKv2(String line, MutableObjectId returnedId) throws IOException
      Parses a ACK/NAK line in protocol V2.
      Parameters:
      line - to parse
      returnedId - in case of ACK_COMMON
      Returns:
      one of NAK, ACK_COMMON, or ACK_READY
      Throws:
      IOException - on protocol or transport errors
    • readACK

      Throws:
      IOException
    • readString

      public String readString() throws 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:
      IOException - the stream cannot be read.
    • readStrings

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

      public String readStringRaw() throws 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:
      IOException - the stream cannot be read.
    • isDelimiter

      public static boolean isDelimiter(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 String delimiter()
      Get the delimiter marker.

      Intended for use only in tests.

      Returns:
      The delimiter marker.
    • end

      static String end()
      Get the end marker.

      Intended for use only in tests.

      Returns:
      The end marker.
    • isEnd

      public static boolean isEnd(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 IOException
      Throws:
      IOException
    • readLength

      int readLength() throws IOException
      Throws:
      IOException
    • invalidHeader

      private IOException invalidHeader()
    • invalidHeader

      private IOException invalidHeader(Throwable cause)