All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.rocksdb.RocksCallbackObject Maven / Gradle / Ivy

Go to download

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.

The newest version!
// 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;

import java.util.List;

/**
 * RocksCallbackObject is similar to {@link RocksObject} but varies
 * in its construction as it is designed for Java objects which have functions
 * which are called from C++ via JNI.
 * 

* RocksCallbackObject is the base-class any RocksDB classes that acts as a * callback from some underlying underlying native C++ {@code rocksdb} object. *

* The use of {@code RocksObject} should always be preferred over * {@link RocksCallbackObject} if callbacks are not required. */ public abstract class RocksCallbackObject extends AbstractImmutableNativeReference { protected final long nativeHandle_; protected RocksCallbackObject(final long... nativeParameterHandles) { super(true); this.nativeHandle_ = initializeNative(nativeParameterHandles); } /** * Given a list of RocksCallbackObjects, it returns a list * of the native handles of the underlying objects. * * @param objectList the rocks callback objects * * @return the native handles */ static /* @Nullable */ long[] toNativeHandleList( /* @Nullable */ final List objectList) { if (objectList == null) { return new long[0]; } final int len = objectList.size(); final long[] handleList = new long[len]; for (int i = 0; i < len; i++) { handleList[i] = objectList.get(i).nativeHandle_; } return handleList; } /** * Construct the Native C++ object which will callback * to our object methods * * @param nativeParameterHandles An array of native handles for any parameter * objects that are needed during construction * * @return The native handle of the C++ object which will callback to us */ protected abstract long initializeNative( final long... nativeParameterHandles); /** * Deletes underlying C++ native callback object pointer */ @Override protected void disposeInternal() { disposeInternal(nativeHandle_); } private native void disposeInternal(final long handle); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy