@ -56,9 +56,19 @@ import org.eclipse.jgit.lib.MutableObjectId;
import org.eclipse.jgit.util.IO ;
import org.eclipse.jgit.util.RawParseUtils ;
class PacketLineIn {
/* must not string pool */
static final String END = new StringBuilder ( 0 ) . toString ( ) ;
/ * *
* Read Git style pkt - line formatting from an input stream .
* < p >
* This class is not thread safe and may issue multiple reads to the underlying
* stream for each method call made .
* < p >
* 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 .
* /
public class PacketLineIn {
/** Magic return from {@link #readString()} when a flush packet is found. */
public static final String END = new StringBuilder ( 0 ) . toString ( ) ; /* must not string pool */
static enum AckNackResult {
/** NAK */
@ -77,7 +87,13 @@ class PacketLineIn {
private final byte [ ] lineBuffer ;
PacketLineIn ( final InputStream i ) {
/ * *
* Create a new packet line reader .
*
* @param i
* the input stream to consume .
* /
public PacketLineIn ( final InputStream i ) {
in = i ;
lineBuffer = new byte [ SideBandOutputStream . SMALL_BUF ] ;
}
@ -106,7 +122,19 @@ class PacketLineIn {
throw new PackProtocolException ( MessageFormat . format ( JGitText . get ( ) . expectedACKNAKGot , line ) ) ;
}
String readString ( ) throws IOException {
/ * *
* Read a single UTF - 8 encoded string packet from the input stream .
* < p >
* 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 { @link # readStringRaw ( ) } instead .
*
* @return the string . { @link # END } if the string was the magic flush
* packet .
* @throws IOException
* the stream cannot be read .
* /
public String readString ( ) throws IOException {
int len = readLength ( ) ;
if ( len = = 0 )
return END ;
@ -127,7 +155,17 @@ class PacketLineIn {
return RawParseUtils . decode ( Constants . CHARSET , raw , 0 , len ) ;
}
String readStringRaw ( ) throws IOException {
/ * *
* Read a single UTF - 8 encoded string packet from the input stream .
* < p >
* Unlike { @link # readString ( ) } a trailing LF will be retained .
*
* @return the string . { @link # END } if the string was the magic flush
* packet .
* @throws IOException
* the stream cannot be read .
* /
public String readStringRaw ( ) throws IOException {
int len = readLength ( ) ;
if ( len = = 0 )
return END ;