1 /* 2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/java/org/apache/http/io/HttpDataInputStream.java $ 3 * $Revision: 376961 $ 4 * $Date: 2006-02-11 11:32:50 +0100 (Sat, 11 Feb 2006) $ 5 * 6 * ==================================================================== 7 * 8 * Copyright 1999-2006 The Apache Software Foundation 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 * ==================================================================== 22 * 23 * This software consists of voluntary contributions made by many 24 * individuals on behalf of the Apache Software Foundation. For more 25 * information on the Apache Software Foundation, please see 26 * <http://www.apache.org/>. 27 * 28 */ 29 30 package org.apache.http.io; 31 32 import java.io.IOException; 33 import java.io.InputStream; 34 35 /** 36 * A stream for reading from a {@link HttpDataReceiver HttpDataReceiver}. 37 * 38 * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> 39 * 40 * @version $Revision: 376961 $ 41 * 42 * @since 4.0 43 */ 44 public class HttpDataInputStream extends InputStream { 45 46 private final HttpDataReceiver datareceiver; 47 48 private boolean closed = false; 49 50 public HttpDataInputStream(final HttpDataReceiver datareceiver) { 51 super(); 52 if (datareceiver == null) { 53 throw new IllegalArgumentException("HTTP data receiver may not be null"); 54 } 55 this.datareceiver = datareceiver; 56 } 57 58 public int available() throws IOException { 59 if (!this.closed && this.datareceiver.isDataAvailable(10)) { 60 return 1; 61 } else { 62 return 0; 63 } 64 } 65 66 public void close() throws IOException { 67 this.closed = true; 68 } 69 70 public int read() throws IOException { 71 if (this.closed) { 72 return -1; 73 } else { 74 return this.datareceiver.read(); 75 } 76 } 77 78 public int read(final byte[] b, int off, int len) throws IOException { 79 if (this.closed) { 80 return -1; 81 } else { 82 return this.datareceiver.read(b, off, len); 83 } 84 } 85 86 }