jdk/src/java.httpclient/share/classes/java/net/http/AsyncEvent.java
changeset 37720 45cd7cc65382
parent 36131 379db4b2f95d
child 39730 196f4e25d9f5
--- a/jdk/src/java.httpclient/share/classes/java/net/http/AsyncEvent.java	Fri Apr 29 13:46:19 2016 -0700
+++ b/jdk/src/java.httpclient/share/classes/java/net/http/AsyncEvent.java	Sat Apr 30 00:30:31 2016 +0100
@@ -25,24 +25,27 @@
 package java.net.http;
 
 import java.nio.channels.SelectableChannel;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.SocketChannel;
 
 /**
  * Event handling interface from HttpClientImpl's selector.
  *
- * <p> If blockingChannel is true, then the channel will be put in blocking
+ * If BLOCKING is set, then the channel will be put in blocking
  * mode prior to handle() being called. If false, then it remains non-blocking.
+ *
+ * If REPEATING is set then the event is not cancelled after being posted.
  */
 abstract class AsyncEvent {
 
-    /**
-     * Implement this if channel should be made blocking before calling handle()
-     */
-    public interface Blocking { }
+    public static final int BLOCKING = 0x1; // non blocking if not set
+    public static final int REPEATING = 0x2; // one off event if not set
 
-    /**
-     * Implement this if channel should remain non-blocking before calling handle()
-     */
-    public interface NonBlocking { }
+    protected final int flags;
+
+    AsyncEvent(int flags) {
+        this.flags = flags;
+    }
 
     /** Returns the channel */
     public abstract SelectableChannel channel();
@@ -55,4 +58,12 @@
 
     /** Called when selector is shutting down. Abort all exchanges. */
     public abstract void abort();
+
+    public boolean blocking() {
+        return (flags & BLOCKING) != 0;
+    }
+
+    public boolean repeating() {
+        return (flags & REPEATING) != 0;
+    }
 }