static int lua_sigar_who_gc(lua_State *L) { lua_sigar_who_t *who = (lua_sigar_who_t *)luaL_checkudata(L, 1, "sigar_who"); sigar_who_list_destroy(who->sigar, &(who->who)); return 0; }
JNIEXPORT jobjectArray SIGAR_JNIx(getWhoList) (JNIEnv *env, jobject sigar_obj) { int status; unsigned int i; sigar_who_list_t wholist; jobjectArray whoarray; jclass cls = SIGAR_FIND_CLASS("Who"); dSIGAR(NULL); if ((status = sigar_who_list_get(sigar, &wholist)) != SIGAR_OK) { sigar_throw_error(env, jsigar, status); return NULL; } JAVA_SIGAR_INIT_FIELDS_WHO(cls); whoarray = JENV->NewObjectArray(env, wholist.number, cls, 0); SIGAR_CHEX; for (i=0; i<wholist.number; i++) { jobject info_obj = JENV->AllocObject(env, cls); SIGAR_CHEX; JAVA_SIGAR_SET_FIELDS_WHO(cls, info_obj, wholist.data[i]); JENV->SetObjectArrayElement(env, whoarray, i, info_obj); SIGAR_CHEX; } sigar_who_list_destroy(sigar, &wholist); return whoarray; }
static VALUE rb_sigar_who_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_who_list_t list; VALUE RETVAL; status = sigar_who_list_get(sigar, &list); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_list((char *)&list.data[0], list.number, sizeof(*list.data), rb_cSigarWho); sigar_who_list_destroy(sigar, &list); return RETVAL; }