< prev index next >

src/java.base/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java

Print this page
rev 49242 : [mq]: selector-cleanup

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -40,18 +40,18 @@
     extends SelectorImpl
 {
     private final EventPortWrapper pollWrapper;
 
     // Maps from file descriptors to keys
-    private Map<Integer,SelectionKeyImpl> fdToKey;
+    private final Map<Integer, SelectionKeyImpl> fdToKey;
 
     // True if this Selector has been closed
-    private boolean closed = false;
+    private boolean closed;
 
     // Lock for interrupt triggering and clearing
     private final Object interruptLock = new Object();
-    private boolean interruptTriggered = false;
+    private boolean interruptTriggered;
 
     /**
      * Package private constructor called by factory method in
      * the abstract superclass Selector.
      */

@@ -59,13 +59,18 @@
         super(sp);
         pollWrapper = new EventPortWrapper();
         fdToKey = new HashMap<>();
     }
 
-    protected int doSelect(long timeout) throws IOException {
+    private void ensureOpen() {
         if (closed)
             throw new ClosedSelectorException();
+    }
+
+    @Override
+    protected int doSelect(long timeout) throws IOException {
+        ensureOpen();
         processDeregisterQueue();
         int entries;
         try {
             begin();
             entries = pollWrapper.poll(timeout);

@@ -103,10 +108,11 @@
             }
         }
         return numKeysUpdated;
     }
 
+    @Override
     protected void implClose() throws IOException {
         if (closed)
             return;
         closed = true;
 

@@ -114,11 +120,10 @@
         synchronized (interruptLock) {
             interruptTriggered = true;
         }
 
         pollWrapper.close();
-        selectedKeys = null;
 
         // Deregister channels
         Iterator<SelectionKey> i = keys.iterator();
         while (i.hasNext()) {
             SelectionKeyImpl ski = (SelectionKeyImpl)i.next();

@@ -128,16 +133,18 @@
                 ((SelChImpl)selch).kill();
             i.remove();
         }
     }
 
+    @Override
     protected void implRegister(SelectionKeyImpl ski) {
         int fd = IOUtil.fdVal(ski.channel.getFD());
         fdToKey.put(Integer.valueOf(fd), ski);
         keys.add(ski);
     }
 
+    @Override
     protected void implDereg(SelectionKeyImpl ski) throws IOException {
         int i = ski.getIndex();
         assert (i >= 0);
         int fd = ski.channel.getFDVal();
         fdToKey.remove(Integer.valueOf(fd));

@@ -149,17 +156,18 @@
         SelectableChannel selch = ski.channel();
         if (!selch.isOpen() && !selch.isRegistered())
             ((SelChImpl)selch).kill();
     }
 
+    @Override
     public void putEventOps(SelectionKeyImpl sk, int ops) {
-        if (closed)
-            throw new ClosedSelectorException();
+        ensureOpen();
         int fd = sk.channel.getFDVal();
         pollWrapper.setInterest(fd, ops);
     }
 
+    @Override
     public Selector wakeup() {
         synchronized (interruptLock) {
             if (!interruptTriggered) {
                 pollWrapper.interrupt();
                 interruptTriggered = true;
< prev index next >