org.eclipse.jetty.io.nio
Class SelectChannelEndPoint

java.lang.Object
  extended by org.eclipse.jetty.io.nio.ChannelEndPoint
      extended by org.eclipse.jetty.io.nio.SelectChannelEndPoint
All Implemented Interfaces:
AsyncEndPoint, ConnectedEndPoint, EndPoint
Direct Known Subclasses:
NetworkTrafficSelectChannelEndPoint

public class SelectChannelEndPoint
extends ChannelEndPoint
implements AsyncEndPoint, ConnectedEndPoint

An Endpoint that can be scheduled by SelectorManager.


Field Summary
static Logger LOG
           
 
Fields inherited from class org.eclipse.jetty.io.nio.ChannelEndPoint
_channel, _gather2, _local, _maxIdleTime, _remote, _socket
 
Constructor Summary
SelectChannelEndPoint(SocketChannel channel, SelectorManager.SelectSet selectSet, SelectionKey key, int maxIdleTime)
           
 
Method Summary
 void asyncDispatch()
          Dispatch the endpoint to a thread to attend to it.
 boolean blockReadable(long timeoutMs)
           
 boolean blockWritable(long timeoutMs)
           
 void cancelTimeout(Timeout.Task task)
           
 void checkIdleTimestamp(long now)
           
 void clearWritable()
           
 void close()
          Close any backing stream associated with the endpoint
 void dispatch()
           
 int fill(Buffer buffer)
          Fill the buffer from the current putIndex to it's capacity from whatever byte source is backing the buffer.
 int flush(Buffer buffer)
          Flush the buffer from the current getIndex to it's putIndex using whatever byte sink is backing the buffer.
 int flush(Buffer header, Buffer buffer, Buffer trailer)
          Flush the buffer from the current getIndex to it's putIndex using whatever byte sink is backing the buffer.
 Connection getConnection()
           
 long getIdleTimestamp()
           
 SelectionKey getSelectionKey()
           
 SelectorManager getSelectManager()
           
 SelectorManager.SelectSet getSelectSet()
           
protected  void handle()
           
 boolean hasProgressed()
           
 boolean isCheckForIdle()
          Get if the endpoint should be checked for idleness
 boolean isWritable()
           
protected  void notIdle()
           
 void onIdleExpired()
          Callback when idle.
 void schedule()
          Called by selectSet to schedule handling
 void scheduleTimeout(Timeout.Task task, long timeoutMs)
           
 void scheduleWrite()
          Schedule a write dispatch.
 void setCheckForIdle(boolean check)
          Set if the endpoint should be checked for idleness
 void setConnection(Connection connection)
           
 void setMaxIdleTime(int timeMs)
          Don't set the SoTimeout
 String toString()
           
protected  boolean undispatch()
          Called when a dispatched thread is no longer handling the endpoint.
 
Methods inherited from class org.eclipse.jetty.io.nio.ChannelEndPoint
flush, gatheringFlush, getChannel, getLocalAddr, getLocalHost, getLocalPort, getMaxIdleTime, getRemoteAddr, getRemoteHost, getRemotePort, getTransport, isBlocking, isInputShutdown, isOpen, isOutputShutdown, shutdownChannelInput, shutdownChannelOutput, shutdownInput, shutdownOutput
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.jetty.io.EndPoint
flush, getLocalAddr, getLocalHost, getLocalPort, getMaxIdleTime, getRemoteAddr, getRemoteHost, getRemotePort, getTransport, isBlocking, isInputShutdown, isOpen, isOutputShutdown, shutdownInput, shutdownOutput
 

Field Detail

LOG

public static final Logger LOG
Constructor Detail

SelectChannelEndPoint

public SelectChannelEndPoint(SocketChannel channel,
                             SelectorManager.SelectSet selectSet,
                             SelectionKey key,
                             int maxIdleTime)
                      throws IOException
Throws:
IOException
Method Detail

getSelectionKey

public SelectionKey getSelectionKey()

getSelectManager

public SelectorManager getSelectManager()

getConnection

public Connection getConnection()
Specified by:
getConnection in interface ConnectedEndPoint

setConnection

public void setConnection(Connection connection)
Specified by:
setConnection in interface ConnectedEndPoint

getIdleTimestamp

public long getIdleTimestamp()

schedule

public void schedule()
Called by selectSet to schedule handling


asyncDispatch

public void asyncDispatch()
Description copied from interface: AsyncEndPoint
Dispatch the endpoint to a thread to attend to it.

Specified by:
asyncDispatch in interface AsyncEndPoint

dispatch

public void dispatch()

undispatch

protected boolean undispatch()
Called when a dispatched thread is no longer handling the endpoint. The selection key operations are updated.

Returns:
If false is returned, the endpoint has been redispatched and thread must keep handling the endpoint.

cancelTimeout

public void cancelTimeout(Timeout.Task task)
Specified by:
cancelTimeout in interface AsyncEndPoint

scheduleTimeout

public void scheduleTimeout(Timeout.Task task,
                            long timeoutMs)
Specified by:
scheduleTimeout in interface AsyncEndPoint

setCheckForIdle

public void setCheckForIdle(boolean check)
Description copied from interface: AsyncEndPoint
Set if the endpoint should be checked for idleness

Specified by:
setCheckForIdle in interface AsyncEndPoint

isCheckForIdle

public boolean isCheckForIdle()
Description copied from interface: AsyncEndPoint
Get if the endpoint should be checked for idleness

Specified by:
isCheckForIdle in interface AsyncEndPoint

notIdle

protected void notIdle()

checkIdleTimestamp

public void checkIdleTimestamp(long now)

onIdleExpired

public void onIdleExpired()
Description copied from interface: AsyncEndPoint
Callback when idle.

An endpoint is idle if there has been no IO activity for EndPoint.getMaxIdleTime() and AsyncEndPoint.isCheckForIdle() is true.

Specified by:
onIdleExpired in interface AsyncEndPoint

fill

public int fill(Buffer buffer)
         throws IOException
Description copied from interface: EndPoint
Fill the buffer from the current putIndex to it's capacity from whatever byte source is backing the buffer. The putIndex is increased if bytes filled. The buffer may chose to do a compact before filling.

Specified by:
fill in interface EndPoint
Overrides:
fill in class ChannelEndPoint
Returns:
an int value indicating the number of bytes filled or -1 if EOF is reached.
Throws:
EofException - If input is shutdown or the endpoint is closed.
IOException

flush

public int flush(Buffer header,
                 Buffer buffer,
                 Buffer trailer)
          throws IOException
Description copied from interface: EndPoint
Flush the buffer from the current getIndex to it's putIndex using whatever byte sink is backing the buffer. The getIndex is updated with the number of bytes flushed. Any mark set is cleared. If the entire contents of the buffer are flushed, then an implicit empty() is done. The passed header/trailer buffers are written before/after the contents of this buffer. This may be done either as gather writes, as a poke into this buffer or as several writes. The implementation is free to select the optimal mechanism.

Specified by:
flush in interface EndPoint
Overrides:
flush in class ChannelEndPoint
Parameters:
header - A buffer to write before flushing this buffer. This buffers getIndex is updated.
buffer - The buffer to flush. This buffers getIndex is updated.
trailer - A buffer to write after flushing this buffer. This buffers getIndex is updated.
Returns:
the total number of bytes written.
Throws:
IOException

flush

public int flush(Buffer buffer)
          throws IOException
Description copied from interface: EndPoint
Flush the buffer from the current getIndex to it's putIndex using whatever byte sink is backing the buffer. The getIndex is updated with the number of bytes flushed. Any mark set is cleared. If the entire contents of the buffer are flushed, then an implicit empty() is done.

Specified by:
flush in interface EndPoint
Overrides:
flush in class ChannelEndPoint
Parameters:
buffer - The buffer to flush. This buffers getIndex is updated.
Returns:
the number of bytes written
Throws:
EofException - If the endpoint is closed or output is shutdown.
IOException

blockReadable

public boolean blockReadable(long timeoutMs)
                      throws IOException
Specified by:
blockReadable in interface EndPoint
Overrides:
blockReadable in class ChannelEndPoint
Throws:
IOException

blockWritable

public boolean blockWritable(long timeoutMs)
                      throws IOException
Specified by:
blockWritable in interface EndPoint
Overrides:
blockWritable in class ChannelEndPoint
Throws:
IOException

clearWritable

public void clearWritable()

scheduleWrite

public void scheduleWrite()
Description copied from interface: AsyncEndPoint
Schedule a write dispatch. Set the endpoint to not be writable and schedule a dispatch when it becomes writable.

Specified by:
scheduleWrite in interface AsyncEndPoint
See Also:
AsyncEndPoint.scheduleWrite()

isWritable

public boolean isWritable()
Specified by:
isWritable in interface AsyncEndPoint

hasProgressed

public boolean hasProgressed()
Specified by:
hasProgressed in interface AsyncEndPoint
Returns:
True if IO has been successfully performed since the last call to AsyncEndPoint.hasProgressed()

handle

protected void handle()

close

public void close()
           throws IOException
Description copied from interface: EndPoint
Close any backing stream associated with the endpoint

Specified by:
close in interface EndPoint
Overrides:
close in class ChannelEndPoint
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Object

getSelectSet

public SelectorManager.SelectSet getSelectSet()

setMaxIdleTime

public void setMaxIdleTime(int timeMs)
                    throws IOException
Don't set the SoTimeout

Specified by:
setMaxIdleTime in interface EndPoint
Overrides:
setMaxIdleTime in class ChannelEndPoint
Parameters:
timeMs - the max idle time in MS. Timeout <= 0 implies an infinite timeout
Throws:
IOException - if the timeout cannot be set.
See Also:
ChannelEndPoint.setMaxIdleTime(int)


Copyright © 1995-2011 Mort Bay Consulting. All Rights Reserved.