org.jacorb.orb.etf

Class StreamConnectionBase

public abstract class StreamConnectionBase extends ConnectionBase

This an abstract base implementation of the ETF::Connection interface.

Version: $Id: StreamConnectionBase.java,v 1.6 2007/02/06 09:15:22 andre.spiegel Exp $

Author: Nicolas Noffke Andre Spiegel

Field Summary
protected InputStreamin_stream
Reads performed on this stream.
protected OutputStreamout_stream
Writes performed on this stream.
Constructor Summary
protected StreamConnectionBase()
protected StreamConnectionBase(StreamConnectionBase other)
Initialise this instance as a copy of another.
Method Summary
voidflush()
Causes any buffered data to be actually written to the Connection.
booleanis_data_available()
Simply return true if calling a read on this instance would find data in the connection.
intread(BufferHolder data, int offset, int min_length, int max_length, long time_out)
Reads bytes from the connection.
voidwrite(boolean is_first, boolean is_last, byte[] data, int offset, int length, long time_out)
Writes bytes to this Connection.

Field Detail

in_stream

protected InputStream in_stream
Reads performed on this stream.

out_stream

protected OutputStream out_stream
Writes performed on this stream.

Constructor Detail

StreamConnectionBase

protected StreamConnectionBase()

StreamConnectionBase

protected StreamConnectionBase(StreamConnectionBase other)
Initialise this instance as a copy of another. Intended for use within subclass constructors.

Method Detail

flush

public void flush()
Causes any buffered data to be actually written to the Connection.

is_data_available

public boolean is_data_available()
Simply return true if calling a read on this instance would find data in the connection. Otherwise, the function shall return false.

read

public int read(BufferHolder data, int offset, int min_length, int max_length, long time_out)
Reads bytes from the connection.

Parameters: data holds a byte array to which the bytes will be written. The field data.value must be initialized with a valid byte array already, it cannot be null. offset the index in data.value at which the first byte will be written. min_length the minimum number of bytes that shall be read from the Connection. The method will block until at least this many bytes have been read. If min_length is 0, the method will always return immediately without reading any data. max_length the maximum number of bytes that shall be read from the Connection. If max_length is greater than min_length, then the transport is free to read (max_length - min_length) additional bytes beyond min_length. time_out timeout for this particular read operation. Currently ignored in JacORB; we use socket-level timeouts.

Returns: the number of bytes actually read. The last byte written to data.value is at the index offset + this return value. This return type is a change to the ETF draft spec in JacORB. It is needed because the mechanism suggested in the draft does not work in Java.

Throws: org.omg.CORBA.TIMEOUT if the socket-level timeout expires before the read operation completes. org.omg.CORBA.TRANSIENT if the I/O is interrupted. org.omg.CORBA.COMM_FAILURE if the read operation fails, for example because the connection has been closed.

write

public void write(boolean is_first, boolean is_last, byte[] data, int offset, int length, long time_out)
Writes bytes to this Connection.

Parameters: is_first Currently not used in JacORB. is_last Currently not used in JacORB. data the buffer that holds the data that is to be written. offset index of the first byte in data that shall be written to the Connection. length the number of bytes in data that shall be written. The last byte in data that is written is at the index offset + length. time_out timeout for this particular write operation. Currently ignored in JacORB.

Throws: org.omg.CORBA.COMM_FAILURE if anything goes wrong during the write operation.