--- 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;
+ }
}