1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 // 6 // Copyright (c) 2011 The LevelDB Authors. All rights reserved. 7 // Use of this source code is governed by a BSD-style license that can be 8 // found in the LICENSE file. See the AUTHORS file for names of contributors. 9 10 #pragma once 11 #ifndef ROCKSDB_LITE 12 13 #include "db/compaction/compaction_picker.h" 14 15 namespace ROCKSDB_NAMESPACE { 16 class UniversalCompactionPicker : public CompactionPicker { 17 public: UniversalCompactionPicker(const ImmutableOptions & ioptions,const InternalKeyComparator * icmp)18 UniversalCompactionPicker(const ImmutableOptions& ioptions, 19 const InternalKeyComparator* icmp) 20 : CompactionPicker(ioptions, icmp) {} 21 virtual Compaction* PickCompaction( 22 const std::string& cf_name, const MutableCFOptions& mutable_cf_options, 23 const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage, 24 LogBuffer* log_buffer, 25 SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override; MaxOutputLevel()26 virtual int MaxOutputLevel() const override { return NumberLevels() - 1; } 27 28 virtual bool NeedsCompaction( 29 const VersionStorageInfo* vstorage) const override; 30 }; 31 } // namespace ROCKSDB_NAMESPACE 32 #endif // !ROCKSDB_LITE 33