summaryrefslogtreecommitdiff
path: root/leveldb/port/port_chromium.cc
diff options
context:
space:
mode:
Diffstat (limited to 'leveldb/port/port_chromium.cc')
-rw-r--r--leveldb/port/port_chromium.cc80
1 files changed, 80 insertions, 0 deletions
diff --git a/leveldb/port/port_chromium.cc b/leveldb/port/port_chromium.cc
new file mode 100644
index 0000000..2ab49b9
--- /dev/null
+++ b/leveldb/port/port_chromium.cc
@@ -0,0 +1,80 @@
+// 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"
+#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();
+}
+
+bool Snappy_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);
+ return true;
+#else
+ return false;
+#endif
+}
+
+bool Snappy_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
+ return false;
+#endif
+}
+
+}
+}