fork of https://github.com/oxigraph/rocksdb and https://github.com/facebook/rocksdb for nextgraph and oxigraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.2 KiB
102 lines
3.2 KiB
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the root directory of this source tree. An additional grant
|
|
// of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
package org.rocksdb;
|
|
|
|
/**
|
|
* A RocksEnv is an interface used by the rocksdb implementation to access
|
|
* operating system functionality like the filesystem etc.
|
|
*
|
|
* All Env implementations are safe for concurrent access from
|
|
* multiple threads without any external synchronization.
|
|
*/
|
|
public class RocksEnv extends RocksObject {
|
|
public static final int FLUSH_POOL = 0;
|
|
public static final int COMPACTION_POOL = 1;
|
|
|
|
static {
|
|
default_env_ = new RocksEnv(getDefaultEnvInternal());
|
|
}
|
|
private static native long getDefaultEnvInternal();
|
|
|
|
/**
|
|
* Returns the default environment suitable for the current operating
|
|
* system.
|
|
*
|
|
* The result of getDefault() is a singleton whose ownership belongs
|
|
* to rocksdb c++. As a result, the returned RocksEnv will not
|
|
* have the ownership of its c++ resource, and calling its dispose()
|
|
* will be no-op.
|
|
*/
|
|
public static RocksEnv getDefault() {
|
|
return default_env_;
|
|
}
|
|
|
|
/**
|
|
* Sets the number of background worker threads of the flush pool
|
|
* for this environment.
|
|
* default number: 1
|
|
*/
|
|
public RocksEnv setBackgroundThreads(int num) {
|
|
return setBackgroundThreads(num, FLUSH_POOL);
|
|
}
|
|
|
|
/**
|
|
* Sets the number of background worker threads of the specified thread
|
|
* pool for this environment.
|
|
*
|
|
* @param num the number of threads
|
|
* @param poolID the id to specified a thread pool. Should be either
|
|
* FLUSH_POOL or COMPACTION_POOL.
|
|
* Default number: 1
|
|
*/
|
|
public RocksEnv setBackgroundThreads(int num, int poolID) {
|
|
setBackgroundThreads(nativeHandle_, num, poolID);
|
|
return this;
|
|
}
|
|
private native void setBackgroundThreads(
|
|
long handle, int num, int priority);
|
|
|
|
/**
|
|
* Returns the length of the queue associated with the specified
|
|
* thread pool.
|
|
*
|
|
* @param poolID the id to specified a thread pool. Should be either
|
|
* FLUSH_POOL or COMPACTION_POOL.
|
|
*/
|
|
public int getThreadPoolQueueLen(int poolID) {
|
|
return getThreadPoolQueueLen(nativeHandle_, poolID);
|
|
}
|
|
private native int getThreadPoolQueueLen(long handle, int poolID);
|
|
|
|
/**
|
|
* Package-private constructor that uses the specified native handle
|
|
* to construct a RocksEnv. Note that the ownership of the input handle
|
|
* belongs to the caller, and the newly created RocksEnv will not take
|
|
* the ownership of the input handle. As a result, calling dispose()
|
|
* of the created RocksEnv will be no-op.
|
|
*/
|
|
RocksEnv(long handle) {
|
|
super();
|
|
nativeHandle_ = handle;
|
|
disOwnNativeHandle();
|
|
}
|
|
|
|
/**
|
|
* The helper function of dispose() which all subclasses of RocksObject
|
|
* must implement to release their associated C++ resource.
|
|
*/
|
|
protected void disposeInternal() {
|
|
disposeInternal(nativeHandle_);
|
|
}
|
|
private native void disposeInternal(long handle);
|
|
|
|
/**
|
|
* The static default RocksEnv. The ownership of its native handle
|
|
* belongs to rocksdb c++ and is not able to be released on the Java
|
|
* side.
|
|
*/
|
|
static RocksEnv default_env_;
|
|
}
|
|
|