1 /* 2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/java/org/apache/http/io/HttpDataOutputStream.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.OutputStream; 34 35 /** 36 * A stream for writing to a {@link HttpDataTransmitter HttpDataTransmitter}. 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 HttpDataOutputStream extends OutputStream { 45 46 private final HttpDataTransmitter datatransmitter; 47 48 private boolean closed = false; 49 50 public HttpDataOutputStream(final HttpDataTransmitter datatransmitter) { 51 super(); 52 if (datatransmitter == null) { 53 throw new IllegalArgumentException("HTTP data transmitter may not be null"); 54 } 55 this.datatransmitter = datatransmitter; 56 } 57 58 public void close() throws IOException { 59 if (!this.closed) { 60 this.closed = true; 61 this.datatransmitter.flush(); 62 } 63 } 64 65 private void assertNotClosed() { 66 if (this.closed) { 67 throw new IllegalStateException("Stream closed"); 68 } 69 } 70 71 public void flush() throws IOException { 72 assertNotClosed(); 73 this.datatransmitter.flush(); 74 } 75 76 public void write(final byte[] b, int off, int len) throws IOException { 77 assertNotClosed(); 78 this.datatransmitter.write(b, off, len); 79 } 80 81 public void write(int b) throws IOException { 82 assertNotClosed(); 83 this.datatransmitter.write(b); 84 } 85 }