org.xsocket.connection
Interface IBlockingConnection

Package class diagram package IBlockingConnection
All Superinterfaces:
Channel, Closeable, Flushable, GatheringByteChannel, IConnection, IDataSink, IDataSource, ReadableByteChannel, WritableByteChannel
All Known Implementing Classes:
BlockingConnection

public interface IBlockingConnection
extends IConnection, IDataSource, IDataSink, GatheringByteChannel, ReadableByteChannel, WritableByteChannel, Flushable

A connection which accesses the underlying channel in a non-blocking manner. Every read I/O operation will block until it completes. The blocking behavior of write operations will be controlled by the flush configuration.

Author:
grro@xsocket.org

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.xsocket.connection.IConnection
IConnection.FlushMode
 
Field Summary
static int DEFAULT_RECEIVE_TIMEOUT
           
 
Fields inherited from interface org.xsocket.connection.IConnection
DEFAULT_AUTOFLUSH, DEFAULT_CONNECTION_TIMEOUT_MILLIS, DEFAULT_FLUSH_MODE, DEFAULT_IDLE_TIMEOUT_MILLIS, INITIAL_DEFAULT_ENCODING, MAX_TIMEOUT_MILLIS, SO_KEEPALIVE, SO_LINGER, SO_RCVBUF, SO_REUSEADDR, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY
 
Method Summary
 void activateSecuredMode()
          ad hoc activation of a secured mode (SSL).
 void flush()
          flush the send buffer.
 String getEncoding()
          gets the encoding (used by string related methods like write(String) ...)
 IConnection.FlushMode getFlushmode()
          return the flush mode
 int getMaxReadBufferThreshold()
          get the max app read buffer size.
 int getPendingWriteDataSize()
          returns the size of the data which have already been written, but not yet transferred to the underlying socket.
 int getReceiveTimeoutMillis()
          get the timeout for calling read methods in millis
 boolean isAutoflush()
          get autoflush
 boolean isSecure()
          returns if the connection is in secured mode
 void markReadPosition()
          Marks the read position in the connection.
 void markWritePosition()
          Marks the write position in the connection.
 ByteBuffer[] readByteBufferByDelimiter(String delimiter, String encoding)
          read a ByteBuffer by using a delimiter.
 ByteBuffer[] readByteBufferByDelimiter(String delimiter, String encoding, int maxLength)
          read a ByteBuffer by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes
 byte[] readBytesByDelimiter(String delimiter, String encoding)
          read a byte array by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes
 byte[] readBytesByDelimiter(String delimiter, String encoding, int maxLength)
          read a byte array by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes
 String readStringByDelimiter(String delimiter, String encoding)
          read a string by using a delimiter
 String readStringByDelimiter(String delimiter, String encoding, int maxLength)
          read a string by using a delimiter
 String readStringByLength(int length, String encoding)
          read a string by using a length definition
 void removeReadMark()
          remove the read mark
 void removeWriteMark()
          remove the write mark
 boolean resetToReadMark()
          Resets to the marked read position.
 boolean resetToWriteMark()
          Resets to the marked write position.
 void resumeRead()
          resume reading data from the underlying subsystem
 void setAutoflush(boolean autoflush)
          set autoflush.
 void setEncoding(String encoding)
          sets the encoding (used by string related methods like write(String) ...)
 void setFlushmode(IConnection.FlushMode flushMode)
          set the flush mode

By setting the flush mode with ASYNC (default is SYNC) the data will be transferred to the underlying connection in a asynchronous way.
 void setMaxReadBufferThreshold(int size)
          set the max app read buffer threshold
 void setReceiveTimeoutMillis(int timeout)
          set the timeout for calling read methods in millis
 void suspendRead()
          suspend reading data from the underlying subsystem
 long transferFrom(FileChannel source)
          transfer the data of the file channel to this data sink
 int write(String message, String encoding)
          write a message
 
Methods inherited from interface org.xsocket.connection.IConnection
getAttachment, getConnectionTimeoutMillis, getId, getIdleTimeoutMillis, getLocalAddress, getLocalPort, getOption, getOptions, getRemainingMillisToConnectionTimeout, getRemainingMillisToIdleTimeout, getRemoteAddress, getRemotePort, isOpen, setAttachment, setConnectionTimeoutMillis, setIdleTimeoutMillis, setOption
 
Methods inherited from interface org.xsocket.IDataSource
read, readByte, readByteBufferByDelimiter, readByteBufferByDelimiter, readByteBufferByLength, readBytesByDelimiter, readBytesByDelimiter, readBytesByLength, readDouble, readInt, readLong, readShort, readStringByDelimiter, readStringByDelimiter, readStringByLength, transferTo
 
Methods inherited from interface org.xsocket.IDataSink
transferFrom, transferFrom, write, write, write, write, write, write, write, write, write, write, write, write
 
Methods inherited from interface java.nio.channels.GatheringByteChannel
write, write
 
Methods inherited from interface java.nio.channels.WritableByteChannel
write
 
Methods inherited from interface java.nio.channels.Channel
isOpen
 
Methods inherited from interface java.nio.channels.ReadableByteChannel
read
 

Field Detail

DEFAULT_RECEIVE_TIMEOUT

static final int DEFAULT_RECEIVE_TIMEOUT
See Also:
Constant Field Values
Method Detail

setAutoflush

void setAutoflush(boolean autoflush)
set autoflush. If autoflush is activated, each write call will cause a flush.

Parameters:
autoflush - true if autoflush should be activated

isAutoflush

boolean isAutoflush()
get autoflush

Returns:
true, if autoflush is activated

flush

void flush()
           throws ClosedChannelException,
                  IOException,
                  SocketTimeoutException
flush the send buffer. The method call will block until the outgoing data has been flushed into the underlying os-specific send buffer.

Specified by:
flush in interface Flushable
Throws:
IOException - If some other I/O error occurs
SocketTimeoutException - If the timeout has been reached
ClosedChannelException - if the underlying channel is closed

setFlushmode

void setFlushmode(IConnection.FlushMode flushMode)
set the flush mode

By setting the flush mode with ASYNC (default is SYNC) the data will be transferred to the underlying connection in a asynchronous way.

Parameters:
flushMode - FlushMode#ASYNC if flush should be performed asynchronous, FlushMode#SYNC if flush should be perform synchronous

getFlushmode

IConnection.FlushMode getFlushmode()
return the flush mode

Returns:
the flush mode

activateSecuredMode

void activateSecuredMode()
                         throws IOException
ad hoc activation of a secured mode (SSL). By performing of this method all remaining data to send will be flushed. After this all data will be sent and received in the secured mode

Throws:
IOException - If some other I/O error occurs

isSecure

boolean isSecure()
returns if the connection is in secured mode

Returns:
true, if the connection is in secured mode

getPendingWriteDataSize

int getPendingWriteDataSize()
returns the size of the data which have already been written, but not yet transferred to the underlying socket.

Returns:
the size of the pending data to write

setReceiveTimeoutMillis

void setReceiveTimeoutMillis(int timeout)
                             throws IOException
set the timeout for calling read methods in millis

Parameters:
timeout - the timeout in millis
Throws:
IOException - If some other I/O error occurs

getReceiveTimeoutMillis

int getReceiveTimeoutMillis()
                            throws IOException
get the timeout for calling read methods in millis

Returns:
the timeout in millis
Throws:
IOException - If some other I/O error occurs

suspendRead

void suspendRead()
                 throws IOException
suspend reading data from the underlying subsystem

Throws:
IOException - If some other I/O error occurs

resumeRead

void resumeRead()
                throws IOException
resume reading data from the underlying subsystem

Throws:
IOException - If some other I/O error occurs

resetToWriteMark

boolean resetToWriteMark()
Resets to the marked write position. If the connection has been marked, then attempt to reposition it at the mark.

Returns:
true, if reset was successful

resetToReadMark

boolean resetToReadMark()
Resets to the marked read position. If the connection has been marked, then attempt to reposition it at the mark.

Returns:
true, if reset was successful

markWritePosition

void markWritePosition()
Marks the write position in the connection.


markReadPosition

void markReadPosition()
Marks the read position in the connection. Subsequent calls to resetToReadMark() will attempt to reposition the connection to this point.


removeReadMark

void removeReadMark()
remove the read mark


removeWriteMark

void removeWriteMark()
remove the write mark


getEncoding

String getEncoding()
gets the encoding (used by string related methods like write(String) ...)

Returns:
the encoding

setEncoding

void setEncoding(String encoding)
sets the encoding (used by string related methods like write(String) ...)

Parameters:
encoding - the encoding

write

int write(String message,
          String encoding)
          throws IOException,
                 BufferOverflowException
write a message

Parameters:
message - the message to write
encoding - the encoding which should be used th encode the chars into byte (e.g. `US-ASCII` or `UTF-8`)
Returns:
the number of written bytes
Throws:
BufferOverflowException - If the no enough space is available
IOException - If some other I/O error occurs

readByteBufferByDelimiter

ByteBuffer[] readByteBufferByDelimiter(String delimiter,
                                       String encoding)
                                       throws IOException,
                                              BufferUnderflowException
read a ByteBuffer by using a delimiter. The default encoding will be used to decode the delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes

Parameters:
delimiter - the delimiter
encoding - the encoding to use
Returns:
the ByteBuffer
Throws:
BufferUnderflowException - If not enough data is available
IOException - If some other I/O error occurs

readByteBufferByDelimiter

ByteBuffer[] readByteBufferByDelimiter(String delimiter,
                                       String encoding,
                                       int maxLength)
                                       throws IOException,
                                              BufferUnderflowException,
                                              MaxReadSizeExceededException
read a ByteBuffer by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes

Parameters:
delimiter - the delimiter
encoding - the encoding of the delimiter
maxLength - the max length of bytes that should be read. If the limit is exceeded a MaxReadSizeExceededException will been thrown
Returns:
the ByteBuffer
Throws:
BufferUnderflowException - If not enough data is available
MaxReadSizeExceededException - If the max read length has been exceeded and the delimiter hasn’t been found
IOException - If some other I/O error occurs

readBytesByDelimiter

byte[] readBytesByDelimiter(String delimiter,
                            String encoding)
                            throws IOException,
                                   BufferUnderflowException
read a byte array by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes

Parameters:
delimiter - the delimiter
encoding - the encoding to use
Returns:
the read bytes
Throws:
BufferUnderflowException - If not enough data is available
IOException - If some other I/O error occurs

readBytesByDelimiter

byte[] readBytesByDelimiter(String delimiter,
                            String encoding,
                            int maxLength)
                            throws IOException,
                                   BufferUnderflowException,
                                   MaxReadSizeExceededException
read a byte array by using a delimiter For performance reasons, the ByteBuffer readByteBuffer method is generally preferable to get bytes

Parameters:
delimiter - the delimiter
encoding - the encoding to use
maxLength - the max length of bytes that should be read. If the limit is exceeded a MaxReadSizeExceededException will been thrown
Returns:
the read bytes
Throws:
BufferUnderflowException - If not enough data is available
MaxReadSizeExceededException - If the max read length has been exceeded and the delimiter hasn’t been found * @throws ClosedConnectionException If the underlying socket is already closed
IOException - If some other I/O error occurs

readStringByDelimiter

String readStringByDelimiter(String delimiter,
                             String encoding)
                             throws IOException,
                                    BufferUnderflowException,
                                    UnsupportedEncodingException,
                                    MaxReadSizeExceededException
read a string by using a delimiter

Parameters:
delimiter - the delimiter
encoding - the encoding to use
Returns:
the string
Throws:
MaxReadSizeExceededException - If the max read length has been exceeded and the delimiter hasn’t been found
IOException - If some other I/O error occurs
BufferUnderflowException - If not enough data is available
UnsupportedEncodingException - if the given encoding is not supported

readStringByDelimiter

String readStringByDelimiter(String delimiter,
                             String encoding,
                             int maxLength)
                             throws IOException,
                                    BufferUnderflowException,
                                    UnsupportedEncodingException,
                                    MaxReadSizeExceededException
read a string by using a delimiter

Parameters:
delimiter - the delimiter
encoding - the encoding to use
maxLength - the max length of bytes that should be read. If the limit is exceeded a MaxReadSizeExceededException will been thrown
Returns:
the string
Throws:
BufferUnderflowException - If not enough data is available
MaxReadSizeExceededException - If the max read length has been exceeded and the delimiter hasn’t been found * @throws ClosedConnectionException If the underlying socket is already closed
IOException - If some other I/O error occurs
UnsupportedEncodingException - If the given encoding is not supported

readStringByLength

String readStringByLength(int length,
                          String encoding)
                          throws IOException,
                                 BufferUnderflowException,
                                 UnsupportedEncodingException
read a string by using a length definition

Parameters:
length - the amount of bytes to read.
encoding - the encoding to use
Returns:
the string
Throws:
IOException - If some other I/O error occurs
BufferUnderflowException - If not enough data is available
UnsupportedEncodingException - if the given encoding is not supported
IllegalArgumentException, - if the length parameter is negative

transferFrom

long transferFrom(FileChannel source)
                  throws IOException,
                         BufferOverflowException
transfer the data of the file channel to this data sink

Specified by:
transferFrom in interface IDataSink
Parameters:
source - the source channel
Returns:
the number of transfered bytes
Throws:
BufferOverflowException - If the no enough space is available
IOException - If some other I/O error occurs

getMaxReadBufferThreshold

int getMaxReadBufferThreshold()
get the max app read buffer size. If the read buffer size exceeds this limit the connection will stop receiving data. The read buffer size can be higher the limit (max size = maxReadBufferThreshold + socket read buffer size * 2)

Returns:
the max read buffer threshold

setMaxReadBufferThreshold

void setMaxReadBufferThreshold(int size)
set the max app read buffer threshold

Parameters:
maxSize - the max read buffer threshold


Copyright 2008 xSocket.org