ee9dd3721b
From-SVN: r26263
89 lines
1.7 KiB
Java
89 lines
1.7 KiB
Java
// PipedWriter.java - Piped character stream.
|
|
|
|
/* Copyright (C) 1998, 1999 Cygnus Solutions
|
|
|
|
This file is part of libgcj.
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
|
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
|
details. */
|
|
|
|
package java.io;
|
|
|
|
/**
|
|
* @author Tom Tromey <tromey@cygnus.com>
|
|
* @date September 25, 1998
|
|
*/
|
|
|
|
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
|
|
* "The Java Language Specification", ISBN 0-201-63451-1
|
|
* Status: Complete to 1.1.
|
|
*/
|
|
|
|
public class PipedWriter extends Writer
|
|
{
|
|
public void close () throws IOException
|
|
{
|
|
closed = true;
|
|
}
|
|
|
|
public void connect (PipedReader sink) throws IOException
|
|
{
|
|
if (closed)
|
|
throw new IOException ("already closed");
|
|
if (reader != null)
|
|
{
|
|
if (reader == sink)
|
|
return;
|
|
throw new IOException ("already connected");
|
|
}
|
|
try
|
|
{
|
|
reader = sink;
|
|
reader.connect(this);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
reader = null;
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
public void flush () throws IOException
|
|
{
|
|
// We'll throw an exception if we're closed, but there's nothing
|
|
// else to do here.
|
|
if (closed)
|
|
throw new IOException ("closed");
|
|
}
|
|
|
|
public PipedWriter ()
|
|
{
|
|
super ();
|
|
closed = false;
|
|
}
|
|
|
|
public PipedWriter (PipedReader sink) throws IOException
|
|
{
|
|
super ();
|
|
closed = false;
|
|
connect (sink);
|
|
}
|
|
|
|
public void write (char buffer[], int offset, int count) throws IOException
|
|
{
|
|
if (closed)
|
|
throw new IOException ("closed");
|
|
reader.receive(buffer, offset, count);
|
|
}
|
|
|
|
boolean isClosed ()
|
|
{
|
|
return closed;
|
|
}
|
|
|
|
// The associated reader.
|
|
private PipedReader reader;
|
|
private boolean closed;
|
|
}
|