org.eclipse.jetty.io.nio

## Class SelectChannelEndPoint

- java.lang.Object
- - org.eclipse.jetty.io.nio.ChannelEndPoint
  - - 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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Logger` | `LOG`

    - ### Fields inherited from class org.eclipse.jetty.io.nio.ChannelEndPoint

      `_channel, _gather2, _local, _maxIdleTime, _remote, _socket`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SelectChannelEndPoint(SocketChannel channel, SelectorManager.SelectSet selectSet, SelectionKey key, int maxIdleTime)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `asyncDispatch()` Dispatch the endpoint.
    `boolean` | `blockReadable(long timeoutMs)`
    `boolean` | `blockWritable(long timeoutMs)`
    `void` | `cancelTimeout(Timeout.Task task)`
    `void` | `checkIdleTimestamp(long now)`
    `void` | `close()` Close any backing stream associated with the endpoint
    `void` | `dispatch()` Dispatch the endpoint if it is not already dispatched
    `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(long idleForMs)` 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. If it is already dispatched, schedule a redispatch
      Specified by:
        `asyncDispatch` in interface `AsyncEndPoint`

    - #### dispatch

          public void dispatch()

      Description copied from interface: `AsyncEndPoint`
      Dispatch the endpoint if it is not already dispatched
      Specified by:
        `dispatch` in interface `AsyncEndPoint`

    - #### 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(long idleForMs)

      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`
      Parameters:
        `idleForMs` - TODO

    - #### 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`

    - #### 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-2012 Mort Bay Consulting. All Rights Reserved.