< prev index next >

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

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


  44     // The poll object
  45     private final DevPollArrayWrapper pollWrapper;
  46 
  47     // Maps from file descriptors to keys
  48     private final Map<Integer, SelectionKeyImpl> fdToKey;
  49 
  50     // True if this Selector has been closed
  51     private boolean closed;
  52 
  53     // Lock for close/cleanup
  54     private final Object closeLock = new Object();
  55 
  56     // Lock for interrupt triggering and clearing
  57     private final Object interruptLock = new Object();
  58     private boolean interruptTriggered;
  59 
  60     /**
  61      * Package private constructor called by factory method in
  62      * the abstract superclass Selector.
  63      */
  64     DevPollSelectorImpl(SelectorProvider sp) {
  65         super(sp);
  66         long pipeFds = IOUtil.makePipe(false);
  67         fd0 = (int) (pipeFds >>> 32);
  68         fd1 = (int) pipeFds;
  69         try {
  70             pollWrapper = new DevPollArrayWrapper();
  71             pollWrapper.initInterrupt(fd0, fd1);
  72             fdToKey = new HashMap<>();
  73         } catch (Throwable t) {
  74             try {
  75                 FileDispatcherImpl.closeIntFD(fd0);
  76             } catch (IOException ioe0) {
  77                 t.addSuppressed(ioe0);
  78             }
  79             try {
  80                 FileDispatcherImpl.closeIntFD(fd1);
  81             } catch (IOException ioe1) {
  82                 t.addSuppressed(ioe1);
  83             }
  84             throw t;




  44     // The poll object
  45     private final DevPollArrayWrapper pollWrapper;
  46 
  47     // Maps from file descriptors to keys
  48     private final Map<Integer, SelectionKeyImpl> fdToKey;
  49 
  50     // True if this Selector has been closed
  51     private boolean closed;
  52 
  53     // Lock for close/cleanup
  54     private final Object closeLock = new Object();
  55 
  56     // Lock for interrupt triggering and clearing
  57     private final Object interruptLock = new Object();
  58     private boolean interruptTriggered;
  59 
  60     /**
  61      * Package private constructor called by factory method in
  62      * the abstract superclass Selector.
  63      */
  64     DevPollSelectorImpl(SelectorProvider sp) throws IOException {
  65         super(sp);
  66         long pipeFds = IOUtil.makePipe(false);
  67         fd0 = (int) (pipeFds >>> 32);
  68         fd1 = (int) pipeFds;
  69         try {
  70             pollWrapper = new DevPollArrayWrapper();
  71             pollWrapper.initInterrupt(fd0, fd1);
  72             fdToKey = new HashMap<>();
  73         } catch (Throwable t) {
  74             try {
  75                 FileDispatcherImpl.closeIntFD(fd0);
  76             } catch (IOException ioe0) {
  77                 t.addSuppressed(ioe0);
  78             }
  79             try {
  80                 FileDispatcherImpl.closeIntFD(fd1);
  81             } catch (IOException ioe1) {
  82                 t.addSuppressed(ioe1);
  83             }
  84             throw t;


< prev index next >