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.nio.channels.*;
29 import java.nio.channels.spi.AsynchronousChannelProvider;
30 import java.io.Closeable;
31 import java.io.IOException;
32 import java.io.FileDescriptor;
33 import java.util.*;
34 import java.util.concurrent.*;
35 import java.util.concurrent.locks.ReadWriteLock;
36 import java.util.concurrent.locks.ReentrantReadWriteLock;
37 import java.security.AccessController;
38 import sun.security.action.GetPropertyAction;
39 import sun.misc.Unsafe;
40
41 /**
42 * Windows implementation of AsynchronousChannelGroup encapsulating an I/O
43 * completion port.
44 */
45
46 class Iocp extends AsynchronousChannelGroupImpl {
47 private static final Unsafe unsafe = Unsafe.getUnsafe();
48 private static final long INVALID_HANDLE_VALUE = -1L;
49 private static final boolean supportsThreadAgnosticIo;
50
51 // maps completion key to channel
52 private final ReadWriteLock keyToChannelLock = new ReentrantReadWriteLock();
53 private final Map<Integer,OverlappedChannel> keyToChannel =
54 new HashMap<Integer,OverlappedChannel>();
55 private int nextCompletionKey;
56
57 // handle to completion port
58 private final long port;
59
|
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.nio.channels.*;
29 import java.nio.channels.spi.AsynchronousChannelProvider;
30 import java.io.Closeable;
31 import java.io.IOException;
32 import java.io.FileDescriptor;
33 import java.util.*;
34 import java.util.concurrent.*;
35 import java.util.concurrent.locks.ReadWriteLock;
36 import java.util.concurrent.locks.ReentrantReadWriteLock;
37 import java.security.AccessController;
38 import sun.security.action.GetPropertyAction;
39 import jdk.internal.misc.Unsafe;
40
41 /**
42 * Windows implementation of AsynchronousChannelGroup encapsulating an I/O
43 * completion port.
44 */
45
46 class Iocp extends AsynchronousChannelGroupImpl {
47 private static final Unsafe unsafe = Unsafe.getUnsafe();
48 private static final long INVALID_HANDLE_VALUE = -1L;
49 private static final boolean supportsThreadAgnosticIo;
50
51 // maps completion key to channel
52 private final ReadWriteLock keyToChannelLock = new ReentrantReadWriteLock();
53 private final Map<Integer,OverlappedChannel> keyToChannel =
54 new HashMap<Integer,OverlappedChannel>();
55 private int nextCompletionKey;
56
57 // handle to completion port
58 private final long port;
59
|