org.rocksdb.RocksObject Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rocksdbjni Show documentation
Show all versions of rocksdbjni Show documentation
RocksDB fat jar that contains .so files for linux32 and linux64 (glibc and musl-libc), jnilib files
for Mac OSX, and a .dll for Windows x64.
// 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).
package org.rocksdb;
/**
* RocksObject is an implementation of {@link AbstractNativeReference} which
* has an immutable and therefore thread-safe reference to the underlying
* native C++ RocksDB object.
*
* RocksObject is the base-class of almost all RocksDB classes that have a
* pointer to some underlying native C++ {@code rocksdb} object.
*
* The use of {@code RocksObject} should always be preferred over
* {@link RocksMutableObject}.
*/
public abstract class RocksObject extends AbstractImmutableNativeReference {
/**
* An immutable reference to the value of the C++ pointer pointing to some
* underlying native RocksDB C++ object.
*/
protected final long nativeHandle_;
protected RocksObject(final long nativeHandle) {
super(true);
this.nativeHandle_ = nativeHandle;
}
/**
* Deletes underlying C++ object pointer.
*/
@Override
protected void disposeInternal() {
disposeInternal(nativeHandle_);
}
protected abstract void disposeInternal(final long handle);
public long getNativeHandle() {
return nativeHandle_;
}
}