
org.globus.util.http.LineReader Maven / Gradle / Ivy
The newest version!
/*
* Copyright 1999-2010 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
package org.globus.util.http;
import java.io.InputStream;
import java.io.IOException;
import java.io.FilterInputStream;
public class LineReader extends FilterInputStream {
private static final int MAX_LEN = 16* 1024;
protected int _charsRead = 0;
public LineReader(InputStream is) {
super(is);
}
public InputStream getInputStream() {
return in;
}
public int getCharsRead() {
return _charsRead;
}
public String readLine()
throws IOException {
return readLine(in);
}
/**
* Read a line of text from the given Stream and return it
* as a String. Assumes lines end in CRLF.
* @param in a connected stream which contains the entire
* message being sen.
* @exception IOException if a connection fails or abnormal connection
* termination.
* @return the next line read from the stream.
*/
protected String readLine(InputStream in)
throws IOException {
StringBuffer buf = new StringBuffer();
int c, length = 0;
while(true) {
c = in.read();
if (c == -1 || c == '\n' || length > MAX_LEN) {
_charsRead++;
break;
} else if (c == '\r') {
in.read();
_charsRead+=2;
break;
} else {
buf.append((char)c);
length++;
}
}
_charsRead += length;
return buf.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy