Example #1
0
/*
 * Class:     com_iwebpp_libuvpp_handles_LoopHandle
 * Method:    _list
 * Signature: (J)[Ljava/lang/String
 */
extern "C" JNIEXPORT  jobjectArray JNICALL Java_com_iwebpp_libuvpp_handles_LoopHandle__1list
  (JNIEnv *env, jobject that, jlong ptr) {

  assert(ptr);
  assert(_string_cid);
  uv_loop_t* loop = reinterpret_cast<uv_loop_t*>(ptr);
  std::vector<const char*> bag;
  uv_walk(loop, _list_cb, &bag);
  jsize size = static_cast<jsize>(bag.size());
  jobjectArray handles = env->NewObjectArray(size, _string_cid, 0);
  OOMN(env, handles);
  for (int i=0; i < size; i++) {
    jstring s = env->NewStringUTF(bag[i]);
    OOMN(env, s);
    env->SetObjectArrayElement(handles, i, s);
    env->DeleteLocalRef(s);
  }
  return handles;
}
Example #2
0
/*
 * Class:     com_oracle_libuv_LibUV
 * Method:    _getCPUs
 * Signature: ()[Ljava/lang/Object;
 */
JNIEXPORT jobjectArray JNICALL Java_com_oracle_libuv_LibUV__1getCPUs
  (JNIEnv *env, jclass cls) {

  uv_cpu_info_t* cpu_infos;
  int count;

  uv_err_t err = uv_cpu_info(&cpu_infos, &count);
  if (err.code != UV_OK) {
    return NULL;
  }

  jclass objectClassID = env->FindClass("java/lang/Object");
  assert(objectClassID);
  jclass integerClassID = env->FindClass("java/lang/Integer");
  assert(integerClassID);
  jmethodID integerConstructorMID = env->GetMethodID(integerClassID, "<init>", "(I)V");
  assert(integerConstructorMID);

  jobjectArray array = env->NewObjectArray(count * 7, objectClassID, NULL);
  OOMN(env, array);

  int j = 0;
  for (int i = 0; i < count; i++) {
      jstring model = env->NewStringUTF(cpu_infos[i].model);
      OOMN(env, model);
      env->SetObjectArrayElement(array, j++, model);
      env->DeleteLocalRef(model);

      jobject speed = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].speed);
      OOMN(env, speed);
      env->SetObjectArrayElement(array, j++, speed);
      env->DeleteLocalRef(speed);

      jobject user = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].cpu_times.user);
      OOMN(env, user);
      env->SetObjectArrayElement(array, j++, user);
      env->DeleteLocalRef(user);

      jobject nice = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].cpu_times.nice);
      OOMN(env, nice);
      env->SetObjectArrayElement(array, j++, nice);
      env->DeleteLocalRef(nice);

      jobject sys = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].cpu_times.sys);
      OOMN(env, sys);
      env->SetObjectArrayElement(array, j++, sys);
      env->DeleteLocalRef(sys);

      jobject idle = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].cpu_times.idle);
      OOMN(env, idle);
      env->SetObjectArrayElement(array, j++, idle);
      env->DeleteLocalRef(idle);

      jobject irq = env->NewObject(integerClassID, integerConstructorMID, cpu_infos[i].cpu_times.irq);
      OOMN(env, irq);
      env->SetObjectArrayElement(array, j++, irq);
      env->DeleteLocalRef(irq);
  }
  uv_free_cpu_info(cpu_infos, count);

  return array;
}