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.
46 lines
1.6 KiB
46 lines
1.6 KiB
// Copyright (c) 2013 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
|
|
#ifndef STORAGE_LEVELDB_INCLUDE_COMPACTION_FILTER_H_
|
|
#define STORAGE_LEVELDB_INCLUDE_COMPACTION_FILTER_H_
|
|
|
|
#include <string>
|
|
|
|
namespace leveldb {
|
|
|
|
class Slice;
|
|
|
|
// CompactionFilter allows an application to modify/delete a key-value at
|
|
// the time of compaction.
|
|
|
|
class CompactionFilter {
|
|
public:
|
|
virtual ~CompactionFilter() {}
|
|
|
|
|
|
// The compaction process invokes this
|
|
// method for kv that is being compacted. A return value
|
|
// of false indicates that the kv should be preserved in the
|
|
// output of this compaction run and a return value of true
|
|
// indicates that this key-value should be removed from the
|
|
// output of the compaction. The application can inspect
|
|
// the existing value of the key and make decision based on it.
|
|
//
|
|
// When the value is to be preserved, the application has the option
|
|
// to modify the existing_value and pass it back through new_value.
|
|
// value_changed needs to be set to true in this case.
|
|
virtual bool Filter(int level,
|
|
const Slice& key,
|
|
const Slice& existing_value,
|
|
std::string* new_value,
|
|
bool* value_changed) const = 0;
|
|
|
|
// Returns a name that identifies this compaction filter.
|
|
// The name will be printed to LOG file on start up for diagnosis.
|
|
virtual const char* Name() const = 0;
|
|
};
|
|
|
|
} // namespace leveldb
|
|
|
|
#endif // STORAGE_LEVELDB_INCLUDE_COMPACTION_FILTER_H_
|
|
|