blob: fe1a07c25e81cc0911c607fd60e63a33209e829a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_DOWNLOAD_DATABASE_DOWNLOAD_DB_IMPL_H_
#define COMPONENTS_DOWNLOAD_DATABASE_DOWNLOAD_DB_IMPL_H_
#include <string>
#include <vector>
#include "base/files/file_path.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "components/download/database/download_db.h"
#include "components/leveldb_proto/proto_database.h"
namespace download_pb {
class DownloadDBEntry;
}
namespace download {
// A protodb Implementation of DownloadDB.
class DownloadDBImpl : public DownloadDB {
public:
DownloadDBImpl(DownloadNamespace download_namespace,
const base::FilePath& database_dir);
DownloadDBImpl(
DownloadNamespace download_namespace,
const base::FilePath& database_dir,
std::unique_ptr<
leveldb_proto::ProtoDatabase<download_pb::DownloadDBEntry>> db);
~DownloadDBImpl() override;
// DownloadDB implementation.
bool IsInitialized() override;
void Initialize(InitializeCallback callback) override;
void AddOrReplace(const DownloadDBEntry& entry) override;
void AddOrReplaceEntries(
const std::vector<DownloadDBEntry>& entries) override;
void LoadEntries(LoadEntriesCallback callback) override;
void Remove(const std::string& guid) override;
private:
friend class DownloadDBTest;
void DestroyAndReinitialize(InitializeCallback callback);
// Returns the key of the db entry.
std::string GetEntryKey(const std::string& guid) const;
// Called when database is initialized.
void OnDatabaseInitialized(InitializeCallback callback, bool success);
// Called when database is destroyed.
void OnDatabaseDestroyed(InitializeCallback callback, bool success);
// Called when entry is updated.
void OnUpdateDone(bool success);
// Called when entry is removed.
void OnRemoveDone(bool success);
// Called when all database entries are loaded.
void OnAllEntriesLoaded(
LoadEntriesCallback callback,
bool success,
std::unique_ptr<std::vector<download_pb::DownloadDBEntry>> entries);
// Directory to store |db_|.
base::FilePath database_dir_;
// Proto db for storing all the entries.
std::unique_ptr<leveldb_proto::ProtoDatabase<download_pb::DownloadDBEntry>>
db_;
// Whether the object is initialized.
bool is_initialized_;
// Namespace of this db.
DownloadNamespace download_namespace_;
base::WeakPtrFactory<DownloadDBImpl> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(DownloadDBImpl);
};
} // namespace download
#endif // COMPONENTS_DOWNLOAD_DATABASE_IN_PROGRESS_DOWNLOAD_DB_IMPL_H_
|