SunSPOT API V3.0


com.sun.squawk.io
Class MulticastOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by com.sun.squawk.io.MulticastOutputStream

public final class MulticastOutputStream
extends OutputStream

A MulticastOutputStream can be configured to send its output to zero or more named output streams. An instance of MulticastOutputStream is what is returned when opening an output stream via the "multicast://" protocol.

Note that this implementation is not synchronized. If multiple threads access a MulticastOutputStream instance concurrently, and at least one of the threads adds or removes streams, it must be synchronized externally.

This is a Squawk specific class.

Author:
Doug Simon

Constructor Summary
MulticastOutputStream()
          Creates a MulticastOutputStream.
 
Method Summary
 OutputStream add(String name, OutputStream out)
          Adds a given output stream to those contained by this multicaster.
 void close()
          Closes this output stream and releases any system resources associated with this stream. The close method of MulticastOutputStream invokes the close method of all the contained streams and then removes them from this multicaster.
 void flush()
          Flushes this output stream and forces any buffered output bytes to be written out. The flush method of MulticastOutputStream invokes the flush method of all the contained streams.
 OutputStream get(String name)
          Gets the output stream from this multicaster identified by a given name.
 int getSize()
          Gets the number of streams contained by this multicaster.
 Enumeration listNames()
          Lists all names of the output streams to which this multicaster is redirecting output.
 OutputStream remove(String name)
          Removes a given output stream from those contained by this multicaster.
 Enumeration removeAll()
          Removes all the output streams to which this multicaster is redirecting output.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this output stream. The close method of MulticastOutputStream invokes the write(byte[], int, int) method of all the contained streams.
 void write(int b)
          Writes the specified byte to this output stream. The close method of MulticastOutputStream invokes the write(byte) method of all the contained streams.
 
Methods inherited from class java.io.OutputStream
write
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MulticastOutputStream

public MulticastOutputStream()
Creates a MulticastOutputStream.

Method Detail

add

public OutputStream add(String name,
                        OutputStream out)
Adds a given output stream to those contained by this multicaster.

Parameters:
name - the name of the stream to add
out - the stream to add
Returns:
the previous output stream identified by name or null if there wasn't one

close

public void close()
           throws IOException
Closes this output stream and releases any system resources associated with this stream. The general contract of close is that it closes the output stream. A closed stream cannot perform output operations and cannot be reopened.

The close method of OutputStream does nothing.

The close method of MulticastOutputStream invokes the close method of all the contained streams and then removes them from this multicaster.

Overrides:
close in class OutputStream
Throws:
IOException - if an I/O error occurs.

flush

public void flush()
           throws IOException
Flushes this output stream and forces any buffered output bytes to be written out. The general contract of flush is that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.

The flush method of OutputStream does nothing.

The flush method of MulticastOutputStream invokes the flush method of all the contained streams.

Overrides:
flush in class OutputStream
Throws:
IOException - if an I/O error occurs.

get

public OutputStream get(String name)
Gets the output stream from this multicaster identified by a given name.

Parameters:
name - the name of the stream to retrieve
Returns:
the output stream identified by name or null if it does not exist

getSize

public int getSize()
Gets the number of streams contained by this multicaster. Beware that due to the non-synchonized nature of this class, this count may not equal the number of elements returned by listNames().

Returns:
the number of streams contained by this multicaster

listNames

public Enumeration listNames()
Lists all names of the output streams to which this multicaster is redirecting output.

Returns:
an Enumeration over all the names of the streams contained by this multicaster

remove

public OutputStream remove(String name)
Removes a given output stream from those contained by this multicaster. The given stream is only removed if it is non-null and equal to a stream contained by this object.

Parameters:
name - the name of the stream to remove
Returns:
the removed output stream or null if there was no stream identified by name

removeAll

public Enumeration removeAll()
Removes all the output streams to which this multicaster is redirecting output.

Returns:
the enumeration of OutputStream instances removed

write

public void write(int b)
           throws IOException
Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.

Subclasses of OutputStream must provide an implementation for this method.

The close method of MulticastOutputStream invokes the write(byte) method of all the contained streams.

Specified by:
write in class OutputStream
Parameters:
b - the byte.
Throws:
IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
Writes len bytes from the specified byte array starting at offset off to this output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation.

The write method of OutputStream calls the write method of one argument on each of the bytes to be written out. Subclasses are encouraged to override this method and provide a more efficient implementation.

If b is null, a NullPointerException is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

The close method of MulticastOutputStream invokes the write(byte[], int, int) method of all the contained streams.

Overrides:
write in class OutputStream
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.

SunSPOT API V3.0


Copyright © 2006, 2007 Sun Microsystems, Inc. All Rights Reserved.