com.caucho.vfs
Class SocketStream

java.lang.Object
  extended by com.caucho.vfs.StreamImpl
      extended by com.caucho.vfs.SocketStream

@Module
public class SocketStream
extends StreamImpl

Specialized stream to handle sockets.

Unlike VfsStream, when the read() throws and IOException or a SocketException, SocketStream will throw a ClientDisconnectException.


Field Summary
 
Fields inherited from class com.caucho.vfs.StreamImpl
_nullPath, _path
 
Constructor Summary
SocketStream()
           
SocketStream(java.net.Socket s)
           
 
Method Summary
 boolean canRead()
          Returns true since the socket stream can be read.
 boolean canWrite()
          Returns true if this is a writable stream.
 void close()
          Closes the underlying sockets and socket streams.
 void closeWrite()
          Closes the write half of the stream.
 void flush()
          Flushes the socket.
 int getAvailable()
          Returns the number of bytes available to be read from the input stream.
 byte[] getNewline()
          Returns the stream's natural newline character.
 boolean getThrowReadInterrupts()
          If true, throws read interrupts instead of returning an end of fail.
 long getTotalReadBytes()
           
 long getTotalWriteBytes()
           
 boolean hasSkip()
          Returns true if stream is readable and bytes can be skipped.
 void init(java.io.InputStream is, java.io.OutputStream os)
          Initialize the SocketStream with a new Socket.
 void init(java.net.Socket s)
          Initialize the SocketStream with a new Socket.
 int read(byte[] buf, int offset, int length)
          Reads bytes from the socket.
 int readTimeout(byte[] buf, int offset, int length, long timeout)
          Reads bytes from the socket.
 void resetTotalBytes()
           
 void setNewline(byte[] newline)
           
 void setThrowReadInterrupts(boolean allowThrow)
          If true, throws read interrupts instead of returning an end of fail.
 long skip(long n)
          Skips bytes in the file.
 java.lang.String toString()
           
 void write(byte[] buf, int offset, int length, boolean isEnd)
          Writes bytes to the socket.
 
Methods inherited from class com.caucho.vfs.StreamImpl
clearWrite, flushBuffer, flushToDisk, getAttribute, getAttributeNames, getFlushOnNewline, getPath, getReadBuffer, getReadPosition, isClosed, isEof, readNonBlock, removeAttribute, seekEnd, seekStart, setAttribute, setPath, setWriteEncoding, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SocketStream

public SocketStream()

SocketStream

public SocketStream(java.net.Socket s)
Method Detail

init

public void init(java.net.Socket s)
Initialize the SocketStream with a new Socket.

Parameters:
s - the new socket.

init

public void init(java.io.InputStream is,
                 java.io.OutputStream os)
Initialize the SocketStream with a new Socket.

Parameters:
s - the new socket.

setThrowReadInterrupts

public void setThrowReadInterrupts(boolean allowThrow)
If true, throws read interrupts instead of returning an end of fail. Defaults to false.


getThrowReadInterrupts

public boolean getThrowReadInterrupts()
If true, throws read interrupts instead of returning an end of fail. Defaults to false.


setNewline

public void setNewline(byte[] newline)

getNewline

public byte[] getNewline()
Description copied from class: StreamImpl
Returns the stream's natural newline character.

Overrides:
getNewline in class StreamImpl

hasSkip

public boolean hasSkip()
Returns true if stream is readable and bytes can be skipped.

Overrides:
hasSkip in class StreamImpl

skip

public long skip(long n)
          throws java.io.IOException
Skips bytes in the file.

Overrides:
skip in class StreamImpl
Parameters:
n - the number of bytes to skip
Returns:
the actual bytes skipped.
Throws:
java.io.IOException

canRead

public boolean canRead()
Returns true since the socket stream can be read.

Overrides:
canRead in class StreamImpl

read

public int read(byte[] buf,
                int offset,
                int length)
         throws java.io.IOException
Reads bytes from the socket.

Overrides:
read in class StreamImpl
Parameters:
buf - byte buffer receiving the bytes
offset - offset into the buffer
length - number of bytes to read
Returns:
number of bytes read or -1
Throws:
throws - ClientDisconnectException if the connection is dropped
java.io.IOException

readTimeout

public int readTimeout(byte[] buf,
                       int offset,
                       int length,
                       long timeout)
                throws java.io.IOException
Reads bytes from the socket.

Overrides:
readTimeout in class StreamImpl
Parameters:
buf - byte buffer receiving the bytes
offset - offset into the buffer
length - number of bytes to read
Returns:
number of bytes read or -1
Throws:
throws - ClientDisconnectException if the connection is dropped
java.io.IOException

getAvailable

public int getAvailable()
                 throws java.io.IOException
Returns the number of bytes available to be read from the input stream.

Overrides:
getAvailable in class StreamImpl
Throws:
java.io.IOException

canWrite

public boolean canWrite()
Description copied from class: StreamImpl
Returns true if this is a writable stream.

Overrides:
canWrite in class StreamImpl

write

public void write(byte[] buf,
                  int offset,
                  int length,
                  boolean isEnd)
           throws java.io.IOException
Writes bytes to the socket.

Overrides:
write in class StreamImpl
Parameters:
buf - byte buffer containing the bytes
offset - offset into the buffer
length - number of bytes to read
isEnd - if the write is at a close.
Throws:
throws - ClientDisconnectException if the connection is dropped
java.io.IOException

flush

public void flush()
           throws java.io.IOException
Flushes the socket.

Overrides:
flush in class StreamImpl
Throws:
java.io.IOException

resetTotalBytes

public void resetTotalBytes()

getTotalReadBytes

public long getTotalReadBytes()

getTotalWriteBytes

public long getTotalWriteBytes()

closeWrite

public void closeWrite()
                throws java.io.IOException
Closes the write half of the stream.

Overrides:
closeWrite in class StreamImpl
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Closes the underlying sockets and socket streams.

Overrides:
close in class StreamImpl
Throws:
java.io.IOException

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object