static VALUE rb_sigar_net_stat_get(VALUE obj, VALUE flags, VALUE bytes, int port) { int status; int has_port = (port != -1); sigar_t *sigar = rb_sigar_get(obj); sigar_net_stat_t *RETVAL = malloc(sizeof(*RETVAL)); sigar_net_address_t address; if (has_port) { status = rb_sigar_str2net_address(bytes, &address); if (status == SIGAR_OK) { status = sigar_net_stat_port_get(sigar, RETVAL, NUM2INT(flags), &address, port); } } else { status = sigar_net_stat_get(sigar, RETVAL, NUM2INT(flags)); } if (status != SIGAR_OK) { free(RETVAL); RB_SIGAR_CROAK; } return Data_Wrap_Struct(rb_cSigarNetStat, 0, rb_sigar_free, RETVAL); }
static VALUE rb_sigar_net_services_name(VALUE obj, VALUE protocol, VALUE port) { sigar_t *sigar = rb_sigar_get(obj); char *name; if ((name = sigar_net_services_name_get(sigar, NUM2UINT(protocol), NUM2UINT(port)))) { return rb_str_new2(name); } else { return Qnil; } }
static VALUE rb_sigar_proc_env(VALUE obj, VALUE pid) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_proc_env_t procenv; VALUE RETVAL = rb_hash_new(); procenv.type = SIGAR_PROC_ENV_ALL; procenv.env_getter = rb_sigar_env_getall; procenv.data = &RETVAL; status = sigar_proc_env_get(sigar, OBJ2PID(pid), &procenv); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } return RETVAL; }
static VALUE rb_sigar_net_interface_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_net_interface_list_t iflist; VALUE RETVAL; status = sigar_net_interface_list_get(sigar, &iflist); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_strlist(iflist.data, iflist.number); sigar_net_interface_list_destroy(sigar, &iflist); return RETVAL; }
static VALUE rb_sigar_proc_args(VALUE obj, VALUE pid) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_proc_args_t args; VALUE RETVAL; status = sigar_proc_args_get(sigar, OBJ2PID(pid), &args); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_strlist(args.data, args.number); sigar_proc_args_destroy(sigar, &args); return RETVAL; }
static VALUE rb_sigar_proc_list(int argc, VALUE *argv, VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_proc_list_t list; VALUE RETVAL; VALUE vptql; rb_scan_args(argc, argv, "01", &vptql); if (NIL_P(vptql)) { status = sigar_proc_list_get(sigar, &list); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } } else { sigar_ptql_query_t *query; sigar_ptql_error_t error; char *ptql = StringValuePtr(vptql); status = sigar_ptql_query_create(&query, ptql, &error); if (status != SIGAR_OK) { RB_SIGAR_RAISE(error.message); } sigar_ptql_re_impl_set(sigar, NULL, rbsigar_ptql_re_impl); status = sigar_ptql_query_find(sigar, query, &list); sigar_ptql_re_impl_set(sigar, NULL, NULL); sigar_ptql_query_destroy(query); if (status != SIGAR_OK) { RB_SIGAR_RAISE(sigar_strerror(sigar, status)); } } RETVAL = rb_sigar_new_intlist(&list.data[0], list.number); sigar_proc_list_destroy(sigar, &list); return RETVAL; }
static VALUE rb_sigar_net_route_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_net_route_list_t list; VALUE RETVAL; status = sigar_net_route_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_cSigarNetRoute); sigar_net_route_list_destroy(sigar, &list); return RETVAL; }
static VALUE rb_sigar_file_system_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_file_system_list_t fslist; VALUE RETVAL; status = sigar_file_system_list_get(sigar, &fslist); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_list((char *)&fslist.data[0], fslist.number, sizeof(*fslist.data), rb_cSigarFileSystem); sigar_file_system_list_destroy(sigar, &fslist); return RETVAL; }
static VALUE rb_sigar_cpu_info_list(VALUE obj) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_cpu_info_list_t cpu_infos; VALUE RETVAL; status = sigar_cpu_info_list_get(sigar, &cpu_infos); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_list((char *)&cpu_infos.data[0], cpu_infos.number, sizeof(*cpu_infos.data), rb_cSigarCpuInfo); sigar_cpu_info_list_destroy(sigar, &cpu_infos); return RETVAL; }
static VALUE rb_sigar_net_connection_list(VALUE obj, VALUE flags) { int status; unsigned int i; sigar_t *sigar = rb_sigar_get(obj); sigar_net_connection_list_t connlist; VALUE RETVAL; status = sigar_net_connection_list_get(sigar, &connlist, NUM2UINT(flags)); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_list((char *)&connlist.data[0], connlist.number, sizeof(*connlist.data), rb_cSigarNetConnection); sigar_net_connection_list_destroy(sigar, &connlist); return RETVAL; }
static VALUE rb_sigar_logger(VALUE obj) { rb_sigar_t *rbsigar = rb_sigar_get(obj); return rbsigar->logger; }