All Downloads are FREE. Search and download functionalities are using the official Maven repository.

panda.net.io.SocketOutputStream Maven / Gradle / Ivy

Go to download

Panda Core is the core module of Panda Framework, it contains commonly used utility classes similar to apache-commons.

There is a newer version: 1.8.0
Show newest version
package panda.net.io;

import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

/***
 * This class wraps an output stream, storing a reference to its originating socket. When the stream
 * is closed, it will also close the socket immediately afterward. This class is useful for
 * situations where you are dealing with a stream originating from a socket, but do not have a
 * reference to the socket, and want to make sure it closes when the stream closes.
 * 
 * @see SocketInputStream
 ***/

public class SocketOutputStream extends FilterOutputStream {
	private final Socket __socket;

	/***
	 * Creates a SocketOutputStream instance wrapping an output stream and storing a reference to a
	 * socket that should be closed on closing the stream.
	 * 
	 * @param socket The socket to close on closing the stream.
	 * @param stream The input stream to wrap.
	 ***/
	public SocketOutputStream(Socket socket, OutputStream stream) {
		super(stream);
		__socket = socket;
	}

	/***
	 * Writes a number of bytes from a byte array to the stream starting from a given offset. This
	 * method bypasses the equivalent method in FilterOutputStream because the FilterOutputStream
	 * implementation is very inefficient.
	 * 
	 * @param buffer The byte array to write.
	 * @param offset The offset into the array at which to start copying data.
	 * @param length The number of bytes to write.
	 * @exception IOException If an error occurs while writing to the underlying stream.
	 ***/
	@Override
	public void write(byte buffer[], int offset, int length) throws IOException {
		out.write(buffer, offset, length);
	}

	/***
	 * Closes the stream and immediately afterward closes the referenced socket.
	 * 
	 * @exception IOException If there is an error in closing the stream or socket.
	 ***/
	@Override
	public void close() throws IOException {
		super.close();
		__socket.close();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy