2
* JBoss, Home of Professional Open Source
3
* Copyright 2005, JBoss Inc., and individual contributors as indicated
4
* by the @authors tag. See the copyright.txt in the distribution for a
5
* full listing of individual contributors.
7
* This is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU Lesser General Public License as
9
* published by the Free Software Foundation; either version 2.1 of
10
* the License, or (at your option) any later version.
12
* This software is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with this software; if not, write to the Free
19
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
24
* Created on Dec 15, 2005
27
package org.jboss.remoting.transport.multiplex.utility;
29
import java.io.IOException;
30
import java.io.OutputStream;
35
* <code>GrowablePipedOutputStream</code> works together with
36
* <code>GrowablePipedInputStream</code> like <code>java.io.PipedInputStream</code>
37
* and <code>java.io.PipedOutputStream</code> work together, so that
38
* calling <code>GrowablePipedOutputStream.write()</code> causes bytes to be deposited with the
39
* matching <code>GrowablePipedInputStream</code>. However, unlike
40
* <code>PipedInputStream</code>, <code>GrowablePipedInputStream</code> stores
41
* bytes in a <code>ShrinkableByteArrayOutputStream</code>, which
42
* can grow and contract dynamically in response to the number of bytes it contains.
45
* For more information about method behavior, see the <code>java.io.OutputStream</code> javadoc.
46
* @author <a href="mailto:r.sigal@computer.org">Ron Sigal</a>
47
* @version $Revision: 3443 $
52
* @deprecated As of release 2.4.0 the multiplex transport will no longer be actively supported.
55
public class GrowablePipedOutputStream extends OutputStream
57
private GrowablePipedInputStream sink;
58
private boolean connected;
61
* Create a new <code>GrowablePipedOutputStream</code>.
65
public GrowablePipedOutputStream()
71
* Create a new <code>GrowablePipedOutputStream</code>.
74
* @throws java.io.IOException
76
public GrowablePipedOutputStream(GrowablePipedInputStream sink) throws IOException
84
public void write(int b) throws IOException
87
throw new IOException("Pipe not connected");
93
public void write(byte[] bytes) throws IOException
96
throw new IOException("Pipe not connected");
99
throw new NullPointerException();
105
public void write(byte[] bytes, int offset, int length) throws IOException
108
throw new IOException("Pipe not connected");
111
throw new NullPointerException();
113
if ((offset < 0) || (offset > bytes.length) || (length < 0) ||
114
((offset + length) > bytes.length) || ((offset + length) < 0))
115
throw new IndexOutOfBoundsException("offset = " + offset +
116
", length = " + length +
117
", file buffer size: " + bytes.length);
122
sink.receive(bytes, offset, length);
126
protected void connect(GrowablePipedInputStream sink) throws IOException
129
throw new NullPointerException();
131
if (sink.isConnected())
132
throw new IOException("Already connected");
139
protected boolean isConnected()