src/windows/native/sun/nio/ch/Iocp.c

Print this page




  29 #include "jni_util.h"
  30 #include "jlong.h"
  31 #include "nio.h"
  32 #include "nio_util.h"
  33 
  34 #include "sun_nio_ch_Iocp.h"
  35 
  36 
  37 static jfieldID completionStatus_error;
  38 static jfieldID completionStatus_bytesTransferred;
  39 static jfieldID completionStatus_completionKey;
  40 static jfieldID completionStatus_overlapped;
  41 
  42 
  43 JNIEXPORT void JNICALL
  44 Java_sun_nio_ch_Iocp_initIDs(JNIEnv* env, jclass this)
  45 {
  46     jclass clazz;
  47 
  48     clazz = (*env)->FindClass(env, "sun/nio/ch/Iocp$CompletionStatus");
  49     if (clazz == NULL) {
  50         return;
  51     }
  52     completionStatus_error = (*env)->GetFieldID(env, clazz, "error", "I");
  53     if (completionStatus_error == NULL) return;
  54     completionStatus_bytesTransferred = (*env)->GetFieldID(env, clazz, "bytesTransferred", "I");
  55     if (completionStatus_bytesTransferred == NULL) return;
  56     completionStatus_completionKey = (*env)->GetFieldID(env, clazz, "completionKey", "I");
  57     if (completionStatus_completionKey == NULL) return;
  58     completionStatus_overlapped = (*env)->GetFieldID(env, clazz, "overlapped", "J");

  59 }
  60 
  61 JNIEXPORT jint JNICALL
  62 Java_sun_nio_ch_Iocp_osMajorVersion(JNIEnv* env, jclass this)
  63 {
  64     OSVERSIONINFOEX ver;
  65     ver.dwOSVersionInfoSize = sizeof(ver);
  66     GetVersionEx((OSVERSIONINFO *) &ver);
  67     return (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) ?
  68         (jint)(ver.dwMajorVersion) : (jint)0;
  69 }
  70 
  71 JNIEXPORT jlong JNICALL
  72 Java_sun_nio_ch_Iocp_createIoCompletionPort(JNIEnv* env, jclass this,
  73     jlong handle, jlong existingPort, jint completionKey, jint concurrency)
  74 {
  75     ULONG_PTR ck = completionKey;
  76     HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(handle),
  77                                          (HANDLE)jlong_to_ptr(existingPort),
  78                                          ck,




  29 #include "jni_util.h"
  30 #include "jlong.h"
  31 #include "nio.h"
  32 #include "nio_util.h"
  33 
  34 #include "sun_nio_ch_Iocp.h"
  35 
  36 
  37 static jfieldID completionStatus_error;
  38 static jfieldID completionStatus_bytesTransferred;
  39 static jfieldID completionStatus_completionKey;
  40 static jfieldID completionStatus_overlapped;
  41 
  42 
  43 JNIEXPORT void JNICALL
  44 Java_sun_nio_ch_Iocp_initIDs(JNIEnv* env, jclass this)
  45 {
  46     jclass clazz;
  47 
  48     clazz = (*env)->FindClass(env, "sun/nio/ch/Iocp$CompletionStatus");
  49     CHECK_NULL(clazz);


  50     completionStatus_error = (*env)->GetFieldID(env, clazz, "error", "I");
  51     CHECK_NULL(completionStatus_error);
  52     completionStatus_bytesTransferred = (*env)->GetFieldID(env, clazz, "bytesTransferred", "I");
  53     CHECK_NULL(completionStatus_bytesTransferred);
  54     completionStatus_completionKey = (*env)->GetFieldID(env, clazz, "completionKey", "I");
  55     CHECK_NULL(completionStatus_completionKey);
  56     completionStatus_overlapped = (*env)->GetFieldID(env, clazz, "overlapped", "J");
  57     CHECK_NULL(completionStatus_overlapped);
  58 }
  59 
  60 JNIEXPORT jint JNICALL
  61 Java_sun_nio_ch_Iocp_osMajorVersion(JNIEnv* env, jclass this)
  62 {
  63     OSVERSIONINFOEX ver;
  64     ver.dwOSVersionInfoSize = sizeof(ver);
  65     GetVersionEx((OSVERSIONINFO *) &ver);
  66     return (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) ?
  67         (jint)(ver.dwMajorVersion) : (jint)0;
  68 }
  69 
  70 JNIEXPORT jlong JNICALL
  71 Java_sun_nio_ch_Iocp_createIoCompletionPort(JNIEnv* env, jclass this,
  72     jlong handle, jlong existingPort, jint completionKey, jint concurrency)
  73 {
  74     ULONG_PTR ck = completionKey;
  75     HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(handle),
  76                                          (HANDLE)jlong_to_ptr(existingPort),
  77                                          ck,