Add histogramType for statistics

This commit is contained in:
Ankit Gupta
2014-04-16 21:38:33 -07:00
parent 144066a8ff
commit 320ae72e17
7 changed files with 60 additions and 14 deletions

View File

@@ -170,5 +170,15 @@ class WriteBatchJni {
reinterpret_cast<jlong>(wb));
}
};
class HistogramDataJni {
public:
static jmethodID getConstructorMethodId(JNIEnv* env, jclass jclazz) {
static jmethodID mid = env->GetMethodID(
jclazz, "<init>", "(DDDDD)V");
assert(mid != nullptr);
return mid;
}
};
} // namespace rocksdb
#endif // JAVA_ROCKSJNI_PORTAL_H_

View File

@@ -13,6 +13,7 @@
#include "include/org_rocksdb_Statistics.h"
#include "rocksjni/portal.h"
#include "rocksdb/statistics.h"
#include <iostream>
/*
* Class: org_rocksdb_Statistics
@@ -20,9 +21,26 @@
* Signature: (IJ)J
*/
jlong Java_org_rocksdb_Statistics_getTickerCount0(
JNIEnv* env, jobject jobj, int ticker, jlong handle) {
JNIEnv* env, jobject jobj, int tickerType, jlong handle) {
auto st = reinterpret_cast<rocksdb::Statistics*>(handle);
assert(st != nullptr);
return st->getTickerCount(static_cast<rocksdb::Tickers>(ticker));
return st->getTickerCount(static_cast<rocksdb::Tickers>(tickerType));
}
jobject Java_org_rocksdb_Statistics_geHistogramData0(
JNIEnv* env, jobject jobj, int histogramType, jlong handle) {
auto st = reinterpret_cast<rocksdb::Statistics*>(handle);
assert(st != nullptr);
rocksdb::HistogramData data;
st->histogramData(static_cast<rocksdb::Histograms>(histogramType),
&data);
// Don't reuse class pointer
jclass jclazz = env->FindClass("org/rocksdb/HistogramData");
jmethodID mid = rocksdb::HistogramDataJni::getConstructorMethodId(
env, jclazz);
return env->NewObject(jclazz, mid, data.median, data.percentile95,
data.percentile99, data.average, data.standard_deviation);
}