Summary: In follow-up to https://github.com/facebook/rocksdb/issues/14315 Remove obsolete code replaced by new Compressor/Decompressor interface: * OLD_CompressData and OLD_UncompressData * Individual compression/decompression functions (Snappy_*, Zlib_*, BZip2_*, LZ4_*, LZ4HC_*, XPRESS_*, ZSTD_Compress, ZSTD_Uncompress) * CompressionInfo and UncompressionInfo classes * UncompressionDict class * compression::PutDecompressedSizeInfo and GetDecompressedSizeInfo The only small refactoring in this change that is not pure code removal or movement is in blob_file_builder_test.cc. Move some function implementations etc. from compression.h to compression.cc: * CompressionTypeToString, CompressionTypeFromString, CompressionOptionsToString * ZSTD_TrainDictionary (both overloads), ZSTD_FinalizeDictionary * DecompressorDict::Populate * Most compression library includes Also cleaned up other includes of compression.h, which caused some other files to need new includes. Pull Request resolved: https://github.com/facebook/rocksdb/pull/14325 Test Plan: existing tests Reviewed By: hx235 Differential Revision: D93120580 Pulled By: pdillinger fbshipit-source-id: ab5c50db7379c0387a8c0e379642c9ea2799eae5
78 lines
2.5 KiB
C++
78 lines
2.5 KiB
C++
// 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).
|
|
//
|
|
// Copyright (c) 2011 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.
|
|
//
|
|
// This file contains the specification, but not the implementations,
|
|
// of the types/operations/etc. that should be defined by a platform
|
|
// specific port_<platform>.h file. Use this file as a reference for
|
|
// how to port this package to a new platform.
|
|
|
|
#pragma once
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
|
namespace port {
|
|
|
|
// TODO(jorlow): Many of these belong more in the environment class rather than
|
|
// here. We should try moving them and see if it affects perf.
|
|
|
|
// The following boolean constant must be true on a little-endian machine
|
|
// and false otherwise.
|
|
static const bool kLittleEndian = true /* or some other expression */;
|
|
|
|
// ------------------ Threading -------------------
|
|
|
|
// A Mutex represents an exclusive lock.
|
|
class Mutex {
|
|
public:
|
|
Mutex();
|
|
~Mutex();
|
|
|
|
// Lock the mutex. Waits until other lockers have exited.
|
|
// Will deadlock if the mutex is already locked by this thread.
|
|
void Lock();
|
|
|
|
// Unlock the mutex.
|
|
// REQUIRES: This mutex was locked by this thread.
|
|
void Unlock();
|
|
|
|
// Optionally crash if this thread does not hold this mutex.
|
|
// The implementation must be fast, especially if NDEBUG is
|
|
// defined. The implementation is allowed to skip all checks.
|
|
void AssertHeld() const;
|
|
};
|
|
|
|
class CondVar {
|
|
public:
|
|
explicit CondVar(Mutex* mu);
|
|
~CondVar();
|
|
|
|
// Atomically release *mu and block on this condition variable until
|
|
// either a call to SignalAll(), or a call to Signal() that picks
|
|
// this thread to wakeup.
|
|
// REQUIRES: this thread holds *mu
|
|
void Wait();
|
|
|
|
// If there are some threads waiting, wake up at least one of them.
|
|
void Signal();
|
|
|
|
// Wake up all waiting threads.
|
|
void SignallAll();
|
|
};
|
|
|
|
// Thread-safe initialization.
|
|
// Used as follows:
|
|
// static port::OnceType init_control = LEVELDB_ONCE_INIT;
|
|
// static void Initializer() { ... do something ...; }
|
|
// ...
|
|
// port::InitOnce(&init_control, &Initializer);
|
|
using OnceType = intptr_t;
|
|
#define LEVELDB_ONCE_INIT 0
|
|
void InitOnce(port::OnceType*, void (*initializer)());
|
|
|
|
} // namespace port
|
|
} // namespace ROCKSDB_NAMESPACE
|