You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2011/06/01 07:41:20 UTC
svn commit: r1130008 - in
/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net:
SelectionKey.java SelectionKeyImpl.java
Author: mturk
Date: Wed Jun 1 05:41:19 2011
New Revision: 1130008
URL: http://svn.apache.org/viewvc?rev=1130008&view=rev
Log:
Add key's signaled api
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKey.java
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKeyImpl.java
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKey.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKey.java?rev=1130008&r1=1130007&r2=1130008&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKey.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKey.java Wed Jun 1 05:41:19 2011
@@ -76,6 +76,111 @@ public abstract class SelectionKey
public abstract SelectionKey events(int set);
/**
+ * Indicates whether this key's endpoint is interested in the given
+ * operation and is ready to execute it without blocking.
+ *
+ * @param op operation to check.
+ * @return {@code true} if the endpoint is interested in the
+ * in the given operation and is ready, {@code false} otherwise.
+ */
+ public abstract boolean isSignaled(int op);
+
+ /**
+ * Indicates whether this key's endpoint has timed out.
+ * When set, this flag indicates that no operation was signaled during
+ * this key's timeout period.
+ *
+ * @return {@code true} if the endpoint timed out, {@code false} otherwise.
+ */
+ public abstract boolean isTimedout();
+
+ /**
+ * Indicates whether the error condition was signaled during select
+ * operation for this key's endpoint.
+ *
+ * @return {@code true} if the error was signaled, {@code false} otherwise.
+ */
+ public abstract boolean isFailed();
+
+ /**
+ * Indicates whether this key's endpoint was hangup during the select
+ * operation.
+ *
+ * @return {@code true} if the endpoint is hangup, {@code false} otherwise.
+ */
+ public abstract boolean isHangup();
+
+ /**
+ * Indicates whether this key's endpoint is ready to execute any of
+ * its interest operations without blocking.
+ *
+ * @return {@code true} if the endpoint is ready to execute any
+ * of the registered interest operations, {@code false} otherwise.
+ */
+ public final boolean isSignaled()
+ {
+ return isSignaled(0x000f);
+ }
+
+ /**
+ * Indicates whether this key's endpoint is interested in the read operation
+ * and is ready to read. A call to this method is equal to executing
+ * {@code (events() & OP_READ) == OP_READ} or by executing
+ * {@code (isSignaled(OP_READ).
+ *
+ * @return {@code true} if the endpoint is interested in the read operation
+ * and is ready to read, {@code false} otherwise.
+ */
+ public final boolean isReadable()
+ {
+ return isSignaled(OP_READ);
+ }
+
+ /**
+ * Indicates whether this key's endpoint is interested in the read operation
+ * and is ready to read. A call to this method is equal to executing
+ * {@code (events() & OP_WRITE) == OP_WRITE} or by executing
+ * {@code (isSignaled(OP_WRITE).
+ *
+ * @return {@code true} if the endpoint is interested in the write operation
+ * and is ready to write, {@code false} otherwise.
+ */
+ public final boolean isWritable()
+ {
+ return isSignaled(OP_WRITE);
+ }
+
+ /**
+ * Indicates whether this key's endpoint is interested in the accept
+ * operation and is ready to accept new connections.
+ * A call to this method is equal to executing
+ * {@code (events() & OP_ACCEPT) == OP_ACCEPT} or by executing
+ * {@code (isSignaled(OP_ACCEPT).
+ *
+ * @return {@code true} if the endpoint is interested in the accept operation
+ * and is ready to accept new connections, {@code false} otherwise.
+ */
+ public final boolean isAcceptable()
+ {
+ return isSignaled(OP_ACCEPT);
+ }
+
+ /**
+ * Indicates whether this key's endpoint is interested in the connect
+ * operation and is ready to connect.
+ * A call to this method is equal to executing
+ * {@code (events() & OP_CONNECT) == OP_CONNECT} or by executing
+ * {@code (isSignaled(OP_CONNECT).
+ *
+ * @return {@code true} if the endpoint is interested in the connect operation
+ * and is ready to connect, {@code false} otherwise.
+ */
+ public final boolean isConnectable()
+ {
+ return isSignaled(OP_CONNECT);
+ }
+
+ /**
* Returns the endpoint for which this key was created.
*
* @return the related endpoint.
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKeyImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKeyImpl.java?rev=1130008&r1=1130007&r2=1130008&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKeyImpl.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SelectionKeyImpl.java Wed Jun 1 05:41:19 2011
@@ -40,6 +40,16 @@ final class SelectionKeyImpl extends Sel
public Endpoint endpoint;
public volatile boolean selected;
+ // Output selector events.
+ //
+ public static final int PRI = 0x0010;
+ public static final int RDHUP = 0x0020;
+ public static final int HANGUP = 0x0040;
+ public static final int ERROR = 0x0100;
+ public static final int NVAL = 0x0200;
+ public static final int TIMEOUT = 0x0400;
+
+
private static native void init0();
static {
init0();
@@ -65,7 +75,7 @@ final class SelectionKeyImpl extends Sel
{
// Mask out the revents with the ievents.
//
- return (revents & 0x0ff0) | (revents & ievents);
+ return (revents & 0x07f0) | (revents & ievents);
}
@Override
@@ -76,6 +86,27 @@ final class SelectionKeyImpl extends Sel
}
@Override
+ public boolean isSignaled(int op)
+ {
+ return (revents & ievents & op) != 0;
+ }
+
+ public boolean isTimedout()
+ {
+ return (revents & TIMEOUT) != 0;
+ }
+
+ public boolean isFailed()
+ {
+ return (revents & (ERROR | NVAL)) != 0;
+ }
+
+ public boolean isHangup()
+ {
+ return (revents & (RDHUP | HANGUP)) != 0;
+ }
+
+ @Override
public void cancel()
throws ClosedSelectorException
{