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 ImmutableCFOptions & ioptions,const InternalKeyComparator * icmp)18 UniversalCompactionPicker(const ImmutableCFOptions& 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 VersionStorageInfo* vstorage, LogBuffer* log_buffer, 24 SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override; MaxOutputLevel()25 virtual int MaxOutputLevel() const override { return NumberLevels() - 1; } 26 27 virtual bool NeedsCompaction( 28 const VersionStorageInfo* vstorage) const override; 29 }; 30 } // namespace ROCKSDB_NAMESPACE 31 #endif // !ROCKSDB_LITE 32