1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_LEVELDB_PROTO_LEVELDB_DATABASE_H_
6#define COMPONENTS_LEVELDB_PROTO_LEVELDB_DATABASE_H_
7
8#include <string>
9#include <vector>
10
11#include "base/files/file_path.h"
12#include "base/memory/scoped_ptr.h"
13#include "base/strings/string_split.h"
14#include "base/threading/thread_collision_warner.h"
15
16namespace leveldb {
17class DB;
18}  // namespace leveldb
19
20namespace leveldb_proto {
21
22// Interacts with the LevelDB third party module.
23// Once constructed, function calls and destruction should all occur on the
24// same thread (not necessarily the same as the constructor).
25class LevelDB {
26 public:
27  LevelDB();
28  virtual ~LevelDB();
29
30  virtual bool Init(const base::FilePath& database_dir);
31  virtual bool Save(const base::StringPairs& pairs_to_save,
32                    const std::vector<std::string>& keys_to_remove);
33  virtual bool Load(std::vector<std::string>* entries);
34
35 private:
36  DFAKE_MUTEX(thread_checker_);
37  scoped_ptr<leveldb::DB> db_;
38};
39
40}  // namespace leveldb_proto
41
42#endif  // COMPONENTS_LEVELDB_PROTO_LEVELDB_DATABASE_H_
43