| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | // Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.//  This source code is licensed under both the GPLv2 (found in the//  COPYING file in the root directory) and Apache 2.0 License//  (found in the LICENSE.Apache file in the root directory).//// This file implements the "bridge" between Java and C++ for RateLimiter.#include "include/org_rocksdb_RateLimiter.h"#include "rocksdb/rate_limiter.h"#include "rocksjni/portal.h"/* * Class:     org_rocksdb_RateLimiter * Method:    newRateLimiterHandle * Signature: (JJIBZ)J */jlong Java_org_rocksdb_RateLimiter_newRateLimiterHandle(    JNIEnv* /*env*/, jclass /*jclazz*/, jlong jrate_bytes_per_second,    jlong jrefill_period_micros, jint jfairness, jbyte jrate_limiter_mode,    jboolean jauto_tune) {  auto rate_limiter_mode =      ROCKSDB_NAMESPACE::RateLimiterModeJni::toCppRateLimiterMode(          jrate_limiter_mode);  auto* sptr_rate_limiter = new std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>(      ROCKSDB_NAMESPACE::NewGenericRateLimiter(          static_cast<int64_t>(jrate_bytes_per_second),          static_cast<int64_t>(jrefill_period_micros),          static_cast<int32_t>(jfairness), rate_limiter_mode, jauto_tune));  return reinterpret_cast<jlong>(sptr_rate_limiter);}/* * Class:     org_rocksdb_RateLimiter * Method:    disposeInternal * Signature: (J)V */void Java_org_rocksdb_RateLimiter_disposeInternal(JNIEnv* /*env*/,                                                  jobject /*jobj*/,                                                  jlong jhandle) {  auto* handle =      reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(          jhandle);  delete handle;  // delete std::shared_ptr}/* * Class:     org_rocksdb_RateLimiter * Method:    setBytesPerSecond * Signature: (JJ)V */void Java_org_rocksdb_RateLimiter_setBytesPerSecond(JNIEnv* /*env*/,                                                    jobject /*jobj*/,                                                    jlong handle,                                                    jlong jbytes_per_second) {  reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(handle)      ->get()      ->SetBytesPerSecond(jbytes_per_second);}/* * Class:     org_rocksdb_RateLimiter * Method:    getBytesPerSecond * Signature: (J)J */jlong Java_org_rocksdb_RateLimiter_getBytesPerSecond(JNIEnv* /*env*/,                                                     jobject /*jobj*/,                                                     jlong handle) {  return reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(             handle)      ->get()      ->GetBytesPerSecond();}/* * Class:     org_rocksdb_RateLimiter * Method:    request * Signature: (JJ)V */void Java_org_rocksdb_RateLimiter_request(JNIEnv* /*env*/, jobject /*jobj*/,                                          jlong handle, jlong jbytes) {  reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(handle)      ->get()      ->Request(jbytes, ROCKSDB_NAMESPACE::Env::IO_TOTAL);}/* * Class:     org_rocksdb_RateLimiter * Method:    getSingleBurstBytes * Signature: (J)J */jlong Java_org_rocksdb_RateLimiter_getSingleBurstBytes(JNIEnv* /*env*/,                                                       jobject /*jobj*/,                                                       jlong handle) {  return reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(             handle)      ->get()      ->GetSingleBurstBytes();}/* * Class:     org_rocksdb_RateLimiter * Method:    getTotalBytesThrough * Signature: (J)J */jlong Java_org_rocksdb_RateLimiter_getTotalBytesThrough(JNIEnv* /*env*/,                                                        jobject /*jobj*/,                                                        jlong handle) {  return reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(             handle)      ->get()      ->GetTotalBytesThrough();}/* * Class:     org_rocksdb_RateLimiter * Method:    getTotalRequests * Signature: (J)J */jlong Java_org_rocksdb_RateLimiter_getTotalRequests(JNIEnv* /*env*/,                                                    jobject /*jobj*/,                                                    jlong handle) {  return reinterpret_cast<std::shared_ptr<ROCKSDB_NAMESPACE::RateLimiter>*>(             handle)      ->get()      ->GetTotalRequests();}
 |