X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fjava.c;h=87b189fa1d6f647174dc3f813f80bdf4f4dc8886;hb=be99a844a40d7037a910d37a894988b807631a6e;hp=1d762219c0fe710613f9e6729ac7efa63b110022;hpb=de38c1a6e44cadfc88fc6e1d0919663f0c08bbdc;p=collectd.git diff --git a/src/java.c b/src/java.c index 1d762219..87b189fa 100644 --- a/src/java.c +++ b/src/java.c @@ -286,6 +286,10 @@ static jobject ctoj_value_to_number (JNIEnv *jvm_env, /* {{{ */ return (ctoj_jlong_to_number (jvm_env, (jlong) value.counter)); else if (ds_type == DS_TYPE_GAUGE) return (ctoj_jdouble_to_number (jvm_env, (jdouble) value.gauge)); + if (ds_type == DS_TYPE_DERIVE) + return (ctoj_jlong_to_number (jvm_env, (jlong) value.derive)); + if (ds_type == DS_TYPE_ABSOLUTE) + return (ctoj_jlong_to_number (jvm_env, (jlong) value.absolute)); else return (NULL); } /* }}} jobject ctoj_value_to_number */ @@ -1044,33 +1048,39 @@ static int jtoc_value (JNIEnv *jvm_env, /* {{{ */ class_ptr = (*jvm_env)->GetObjectClass (jvm_env, object_ptr); - if (ds_type == DS_TYPE_COUNTER) + if (ds_type == DS_TYPE_GAUGE) { - jlong tmp_long; + jdouble tmp_double; - status = jtoc_long (jvm_env, &tmp_long, - class_ptr, object_ptr, "longValue"); + status = jtoc_double (jvm_env, &tmp_double, + class_ptr, object_ptr, "doubleValue"); if (status != 0) { ERROR ("java plugin: jtoc_value: " - "jtoc_long failed."); + "jtoc_double failed."); return (-1); } - (*ret_value).counter = (counter_t) tmp_long; + (*ret_value).gauge = (gauge_t) tmp_double; } else { - jdouble tmp_double; + jlong tmp_long; - status = jtoc_double (jvm_env, &tmp_double, - class_ptr, object_ptr, "doubleValue"); + status = jtoc_long (jvm_env, &tmp_long, + class_ptr, object_ptr, "longValue"); if (status != 0) { ERROR ("java plugin: jtoc_value: " - "jtoc_double failed."); + "jtoc_long failed."); return (-1); } - (*ret_value).gauge = (gauge_t) tmp_double; + + if (ds_type == DS_TYPE_DERIVE) + (*ret_value).derive = (derive_t) tmp_long; + else if (ds_type == DS_TYPE_ABSOLUTE) + (*ret_value).absolute = (absolute_t) tmp_long; + else + (*ret_value).counter = (counter_t) tmp_long; } return (0); @@ -2400,6 +2410,7 @@ static int cjni_config_callback (oconfig_item_t *ci) /* {{{ */ memcpy (config_block->children + config_block->children_num, ci_copy->children, ci_copy->children_num * sizeof (*ci_copy->children)); + config_block->children_num += ci_copy->children_num; /* Delete the pointers from the copy, so `oconfig_free' can't free them. */ memset (ci_copy->children, 0,