17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.nio.ch; 27 28 import java.io.IOException; 29 import java.nio.channels.*; 30 import java.nio.channels.spi.*; 31 32 33 /** 34 * An implementation of SelectionKey for Solaris. 35 */ 36 37 class SelectionKeyImpl 38 extends AbstractSelectionKey 39 { 40 41 final SelChImpl channel; // package-private 42 final SelectorImpl selector; // package-private 43 44 // Index for a pollfd array in Selector that this key is registered with 45 private int index; 46 47 private volatile int interestOps; 48 private int readyOps; 49 50 SelectionKeyImpl(SelChImpl ch, SelectorImpl sel) { 51 channel = ch; 52 selector = sel; 53 } 54 55 public SelectableChannel channel() { 56 return (SelectableChannel)channel; 57 } 58 59 public Selector selector() { 60 return selector; 61 } 62 74 } 75 76 public int interestOps() { 77 ensureValid(); 78 return interestOps; 79 } 80 81 public SelectionKey interestOps(int ops) { 82 ensureValid(); 83 return nioInterestOps(ops); 84 } 85 86 public int readyOps() { 87 ensureValid(); 88 return readyOps; 89 } 90 91 // The nio versions of these operations do not care if a key 92 // has been invalidated. They are for internal use by nio code. 93 94 void nioReadyOps(int ops) { // package-private 95 readyOps = ops; 96 } 97 98 int nioReadyOps() { // package-private 99 return readyOps; 100 } 101 102 SelectionKey nioInterestOps(int ops) { // package-private 103 if ((ops & ~channel().validOps()) != 0) 104 throw new IllegalArgumentException(); 105 channel.translateAndSetInterestOps(ops, this); 106 interestOps = ops; 107 return this; 108 } 109 110 int nioInterestOps() { // package-private 111 return interestOps; 112 } 113 114 } | 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.nio.ch; 27 28 import java.io.IOException; 29 import java.nio.channels.*; 30 import java.nio.channels.spi.*; 31 32 33 /** 34 * An implementation of SelectionKey for Solaris. 35 */ 36 37 public class SelectionKeyImpl 38 extends AbstractSelectionKey 39 { 40 41 final SelChImpl channel; // package-private 42 public final SelectorImpl selector; 43 44 // Index for a pollfd array in Selector that this key is registered with 45 private int index; 46 47 private volatile int interestOps; 48 private int readyOps; 49 50 SelectionKeyImpl(SelChImpl ch, SelectorImpl sel) { 51 channel = ch; 52 selector = sel; 53 } 54 55 public SelectableChannel channel() { 56 return (SelectableChannel)channel; 57 } 58 59 public Selector selector() { 60 return selector; 61 } 62 74 } 75 76 public int interestOps() { 77 ensureValid(); 78 return interestOps; 79 } 80 81 public SelectionKey interestOps(int ops) { 82 ensureValid(); 83 return nioInterestOps(ops); 84 } 85 86 public int readyOps() { 87 ensureValid(); 88 return readyOps; 89 } 90 91 // The nio versions of these operations do not care if a key 92 // has been invalidated. They are for internal use by nio code. 93 94 public void nioReadyOps(int ops) { 95 readyOps = ops; 96 } 97 98 public int nioReadyOps() { 99 return readyOps; 100 } 101 102 public SelectionKey nioInterestOps(int ops) { 103 if ((ops & ~channel().validOps()) != 0) 104 throw new IllegalArgumentException(); 105 channel.translateAndSetInterestOps(ops, this); 106 interestOps = ops; 107 return this; 108 } 109 110 public int nioInterestOps() { 111 return interestOps; 112 } 113 114 } |