Class SelectionKey

java.lang.Object
java.nio.channels.SelectionKey
Direct Known Subclasses:
AbstractSelectionKey

public abstract class SelectionKey
extends Object
A SelectionKey represents the relationship between a channel and a selector for which the channel is registered.

Operation set

An operation set is represented by an integer value. The bits of an operation set represent categories of operations for a key's channel: Accepting socket connections (OP_ACCEPT), connecting with a socket (OP_CONNECT), reading (OP_READ) and writing (OP_WRITE).

Interest set

The interest set is an operation set that defines the operations that a channel is interested in performing.

Ready set

The ready set is an operation set that shows the operations that a channel is ready to execute.
  • Field Summary

    Fields
    Modifier and Type Field Description
    static int OP_ACCEPT
    Interest set mask bit for socket-accept operations.
    static int OP_CONNECT
    Interest set mask bit for socket-connect operations.
    static int OP_READ
    Interesting operation mask bit for read operations.
    static int OP_WRITE
    Interest set mask bit for write operations.
  • Constructor Summary

    Constructors
    Modifier Constructor Description
    protected SelectionKey()
    Constructs a new SelectionKey.
  • Method Summary

    Modifier and Type Method Description
    Object attach​(Object anObject)
    Attaches an object to this key.
    Object attachment()
    Gets the attached object.
    abstract void cancel()
    Cancels this key.
    abstract SelectableChannel channel()
    Gets the channel of this key.
    abstract int interestOps()
    Gets this key's interest set.
    abstract SelectionKey interestOps​(int operations)
    Sets the interest set for this key.
    boolean isAcceptable()
    Indicates whether this key's channel is interested in the accept operation and is ready to accept new connections.
    boolean isConnectable()
    Indicates whether this key's channel is interested in the connect operation and is ready to connect.
    boolean isReadable()
    Indicates whether this key's channel is interested in the read operation and is ready to read.
    abstract boolean isValid()
    Indicates whether this key is valid.
    boolean isWritable()
    Indicates whether this key's channel is interested in the write operation and is ready to write.
    abstract int readyOps()
    Gets the set of operations that are ready.
    abstract Selector selector()
    Gets the selector for which this key's channel is registered.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • OP_ACCEPT

      public static final int OP_ACCEPT
      Interest set mask bit for socket-accept operations.
      See Also:
      Constant Field Values
    • OP_CONNECT

      public static final int OP_CONNECT
      Interest set mask bit for socket-connect operations.
      See Also:
      Constant Field Values
    • OP_READ

      public static final int OP_READ
      Interesting operation mask bit for read operations.
      See Also:
      Constant Field Values
    • OP_WRITE

      public static final int OP_WRITE
      Interest set mask bit for write operations.
      See Also:
      Constant Field Values
  • Constructor Details

    • SelectionKey

      protected SelectionKey()
      Constructs a new SelectionKey.
  • Method Details

    • attach

      public final Object attach​(Object anObject)
      Attaches an object to this key. It is acceptable to attach null, this discards the old attachment.
      Parameters:
      anObject - the object to attach, or null to discard the current attachment.
      Returns:
      the last attached object or null if no object has been attached.
    • attachment

      public final Object attachment()
      Gets the attached object.
      Returns:
      the attached object or null if no object has been attached.
    • cancel

      public abstract void cancel()
      Cancels this key.

      A key that has been canceled is no longer valid. Calling this method on an already canceled key does nothing.

      Calling this method is safe at any time. The call might block until another ongoing call to a method of this selector has finished. The reason is that it is synchronizing on the key set of the selector. After this call finishes, the key will have been added to the selectors canceled-keys set and will not be included in any future selects of this selector.

    • channel

      public abstract SelectableChannel channel()
      Gets the channel of this key.
      Returns:
      the channel of this key.
    • interestOps

      public abstract int interestOps()
      Gets this key's interest set. The returned set has only those bits set that are valid for this key's channel.
      Returns:
      the interest set of this key.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • interestOps

      public abstract SelectionKey interestOps​(int operations)
      Sets the interest set for this key.
      Parameters:
      operations - the new interest set.
      Returns:
      this key.
      Throws:
      IllegalArgumentException - if a bit in operations is not in the set of valid operations of this key's channel.
      CancelledKeyException - if the key has already been canceled.
    • isAcceptable

      public final boolean isAcceptable()
      Indicates whether this key's channel is interested in the accept operation and is ready to accept new connections. A call to this method is equal to executing (readyOps() & OP_ACCEPT) == OP_ACCEPT.
      Returns:
      true if the channel is interested in the accept operation and is ready to accept new connections, false otherwise.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • isConnectable

      public final boolean isConnectable()
      Indicates whether this key's channel is interested in the connect operation and is ready to connect. A call to this method is equal to executing (readyOps() & OP_CONNECT) == OP_CONNECT.
      Returns:
      true if the channel is interested in the connect operation and is ready to connect, false otherwise.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • isReadable

      public final boolean isReadable()
      Indicates whether this key's channel is interested in the read operation and is ready to read. A call to this method is equal to executing (readyOps() & OP_READ) == OP_READ.
      Returns:
      true if the channel is interested in the read operation and is ready to read, false otherwise.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • isValid

      public abstract boolean isValid()
      Indicates whether this key is valid. A key is valid as long as it has not been canceled.
      Returns:
      true if this key has not been canceled, false otherwise.
    • isWritable

      public final boolean isWritable()
      Indicates whether this key's channel is interested in the write operation and is ready to write. A call to this method is equal to executing (readyOps() & OP_WRITE) == OP_WRITE.
      Returns:
      true if the channel is interested in the write operation and is ready to write, false otherwise.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • readyOps

      public abstract int readyOps()
      Gets the set of operations that are ready. The returned set has only those bits set that are valid for this key's channel.
      Returns:
      the operations for which this key's channel is ready.
      Throws:
      CancelledKeyException - if the key has already been canceled.
    • selector

      public abstract Selector selector()
      Gets the selector for which this key's channel is registered.
      Returns:
      the related selector.