// 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. #include "port/port_chromium.h" #include "util/logging.h" #if defined(USE_SNAPPY) # include "third_party/snappy/src/snappy.h" # include "snappy-stubs-public.h" #endif namespace leveldb { namespace port { Mutex::Mutex() { } Mutex::~Mutex() { } void Mutex::Lock() { mu_.Acquire(); } void Mutex::Unlock() { mu_.Release(); } void Mutex::AssertHeld() { mu_.AssertAcquired(); } CondVar::CondVar(Mutex* mu) : cv_(&mu->mu_) { } CondVar::~CondVar() { } void CondVar::Wait() { cv_.Wait(); } void CondVar::Signal(){ cv_.Signal(); } void CondVar::SignalAll() { cv_.Broadcast(); } void Lightweight_Compress(const char* input, size_t input_length, std::string* output) { #if defined(USE_SNAPPY) output->resize(snappy::MaxCompressedLength(input_length)); size_t outlen; snappy::RawCompress(input, input_length, &(*output)[0], &outlen); output->resize(outlen); #else output->assign(input, input_length); #endif } bool Lightweight_Uncompress(const char* input_data, size_t input_length, std::string* output) { #if defined(USE_SNAPPY) size_t ulength; if (!snappy::GetUncompressedLength(input_data, input_length, &ulength)) { return false; } output->resize(ulength); return snappy::RawUncompress(input_data, input_length, &(*output)[0]); #else output->assign(input_data, input_length); return true; #endif } } }