コード例 #1
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;
}
コード例 #2
0
ファイル: sigar-who.c プロジェクト: 867344633/QService
int lua_sigar_who_get(lua_State *L) {
	sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
	lua_sigar_who_t *who;

	who = lua_newuserdata(L, sizeof(lua_sigar_who_t));
	who->sigar = s;
	sigar_who_list_get(s, &(who->who));
	if (0 != luaL_newmetatable(L, "sigar_who")) {
		lua_pushcfunction(L, lua_sigar_who_len);
		lua_setfield(L, -2, "__len");
		lua_pushcfunction(L, lua_sigar_who_get_who);
		lua_setfield(L, -2, "__index");
		lua_pushcfunction(L, lua_sigar_who_gc);
		lua_setfield(L, -2, "__gc");
	}
	lua_setmetatable(L, -2);

	return 1;
}
コード例 #3
0
ファイル: rbsigar.c プロジェクト: mdkent/sigar
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;
}