JNIEXPORT jobjectArray SIGAR_JNIx(getNetConnectionList) (JNIEnv *env, jobject sigar_obj, jint flags) { int status; unsigned int i; jarray connarray; jclass cls = SIGAR_FIND_CLASS("NetConnection"); sigar_net_connection_list_t connlist; dSIGAR(NULL); status = sigar_net_connection_list_get(sigar, &connlist, flags); if (status != SIGAR_OK) { sigar_throw_error(env, jsigar, status); return NULL; } JAVA_SIGAR_INIT_FIELDS_NETCONNECTION(cls); connarray = JENV->NewObjectArray(env, connlist.number, cls, 0); SIGAR_CHEX; for (i=0; i<connlist.number; i++) { jobject obj = JENV->AllocObject(env, cls); SIGAR_CHEX; JAVA_SIGAR_SET_FIELDS_NETCONNECTION(cls, obj, connlist.data[i]); JENV->SetObjectArrayElement(env, connarray, i, obj); SIGAR_CHEX; } sigar_net_connection_list_destroy(sigar, &connlist); return connarray; }
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; }
NetConnectionInfo::NetConnectionInfo() { sigar_t *sigar_conn; sigar_net_connection_list_t conn_list; sigar_open(&sigar_conn); int flags = SIGAR_NETCONN_SERVER | SIGAR_NETCONN_CLIENT | SIGAR_NETCONN_TCP | SIGAR_NETCONN_UDP ; int status = sigar_net_connection_list_get(sigar_conn,&conn_list,flags); if(status != SIGAR_OK) cout<<"Net Connection Error: "<<status<<sigar_strerror(sigar_conn,status); for(int i=0; i<conn_list.number; i++) { sigar_net_connection_t conn = conn_list.data[i]; } sigar_net_connection_list_destroy(sigar_conn,&conn_list); sigar_close(sigar_conn); }