| package org.rocksdb; |
| // 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). |
| |
| import java.util.List; |
| |
| /** |
| * IngestExternalFileOptions is used by {@link RocksDB#ingestExternalFile(ColumnFamilyHandle, List, IngestExternalFileOptions)} |
| */ |
| public class IngestExternalFileOptions extends RocksObject { |
| |
| public IngestExternalFileOptions() { |
| super(newIngestExternalFileOptions()); |
| } |
| |
| /** |
| * @param moveFiles {@link #setMoveFiles(boolean)} |
| * @param snapshotConsistency {@link #setSnapshotConsistency(boolean)} |
| * @param allowGlobalSeqNo {@link #setAllowGlobalSeqNo(boolean)} |
| * @param allowBlockingFlush {@link #setAllowBlockingFlush(boolean)} |
| */ |
| public IngestExternalFileOptions(final boolean moveFiles, |
| final boolean snapshotConsistency, final boolean allowGlobalSeqNo, |
| final boolean allowBlockingFlush) { |
| super(newIngestExternalFileOptions(moveFiles, snapshotConsistency, |
| allowGlobalSeqNo, allowBlockingFlush)); |
| } |
| |
| /** |
| * Can be set to true to move the files instead of copying them. |
| * |
| * @return true if files will be moved |
| */ |
| public boolean moveFiles() { |
| return moveFiles(nativeHandle_); |
| } |
| |
| /** |
| * Can be set to true to move the files instead of copying them. |
| * |
| * @param moveFiles true if files should be moved instead of copied |
| */ |
| public void setMoveFiles(final boolean moveFiles) { |
| setMoveFiles(nativeHandle_, moveFiles); |
| } |
| |
| /** |
| * If set to false, an ingested file keys could appear in existing snapshots |
| * that where created before the file was ingested. |
| * |
| * @return true if snapshot consistency is assured |
| */ |
| public boolean snapshotConsistency() { |
| return snapshotConsistency(nativeHandle_); |
| } |
| |
| /** |
| * If set to false, an ingested file keys could appear in existing snapshots |
| * that where created before the file was ingested. |
| * |
| * @param snapshotConsistency true if snapshot consistency is required |
| */ |
| public void setSnapshotConsistency(final boolean snapshotConsistency) { |
| setSnapshotConsistency(nativeHandle_, snapshotConsistency); |
| } |
| |
| /** |
| * If set to false, {@link RocksDB#ingestExternalFile(ColumnFamilyHandle, List, IngestExternalFileOptions)} |
| * will fail if the file key range overlaps with existing keys or tombstones in the DB. |
| * |
| * @return true if global seq numbers are assured |
| */ |
| public boolean allowGlobalSeqNo() { |
| return allowGlobalSeqNo(nativeHandle_); |
| } |
| |
| /** |
| * If set to false, {@link RocksDB#ingestExternalFile(ColumnFamilyHandle, List, IngestExternalFileOptions)} |
| * will fail if the file key range overlaps with existing keys or tombstones in the DB. |
| * |
| * @param allowGlobalSeqNo true if global seq numbers are required |
| */ |
| public void setAllowGlobalSeqNo(final boolean allowGlobalSeqNo) { |
| setAllowGlobalSeqNo(nativeHandle_, allowGlobalSeqNo); |
| } |
| |
| /** |
| * If set to false and the file key range overlaps with the memtable key range |
| * (memtable flush required), IngestExternalFile will fail. |
| * |
| * @return true if blocking flushes may occur |
| */ |
| public boolean allowBlockingFlush() { |
| return allowBlockingFlush(nativeHandle_); |
| } |
| |
| /** |
| * If set to false and the file key range overlaps with the memtable key range |
| * (memtable flush required), IngestExternalFile will fail. |
| * |
| * @param allowBlockingFlush true if blocking flushes are allowed |
| */ |
| public void setAllowBlockingFlush(final boolean allowBlockingFlush) { |
| setAllowBlockingFlush(nativeHandle_, allowBlockingFlush); |
| } |
| |
| private native static long newIngestExternalFileOptions(); |
| private native static long newIngestExternalFileOptions( |
| final boolean moveFiles, final boolean snapshotConsistency, |
| final boolean allowGlobalSeqNo, final boolean allowBlockingFlush); |
| private native boolean moveFiles(final long handle); |
| private native void setMoveFiles(final long handle, final boolean move_files); |
| private native boolean snapshotConsistency(final long handle); |
| private native void setSnapshotConsistency(final long handle, |
| final boolean snapshotConsistency); |
| private native boolean allowGlobalSeqNo(final long handle); |
| private native void setAllowGlobalSeqNo(final long handle, |
| final boolean allowGloablSeqNo); |
| private native boolean allowBlockingFlush(final long handle); |
| private native void setAllowBlockingFlush(final long handle, |
| final boolean allowBlockingFlush); |
| @Override protected final native void disposeInternal(final long handle); |
| } |