FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sidecoin/src/leveldbwrapper.cpp at master · superstacked/sidecoin · GitHub
superstacked
/
sidecoin
Public
forked from
glaspe/sidecoin
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
sidecoin
/
src
/
leveldbwrapper.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
78 lines (70 loc) · 2.62 KB
Breadcrumbs
sidecoin
/
src
/
leveldbwrapper.cpp
Copy path
File metadata and controls
78 lines (70 loc) · 2.62 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
//
Copyright (c) 2012-2014 The Bitcoin developers
//
Copyright (c) 2014 Joey Krug and Jack Peterson
//
Distributed under the MIT/X11 software license, see the accompanying
//
file COPYING or http://www.opensource.org/licenses/mit-license.php.
#
include
"
leveldbwrapper.h
"
#
include
"
util.h
"
#
include
<
boost/filesystem.hpp
>
#
include
<
leveldb/cache.h
>
#
include
<
leveldb/env.h
>
#
include
<
leveldb/filter_policy.h
>
#
include
<
memenv.h
>
void
HandleError
(
const
leveldb::Status &status) throw(leveldb_error) {
if
(status.
ok
())
return
;
LogPrintf
(
"
%s
\n
"
, status.
ToString
());
if
(status.
IsCorruption
())
throw
leveldb_error
(
"
Database corrupted
"
);
if
(status.
IsIOError
())
throw
leveldb_error
(
"
Database I/O error
"
);
if
(status.
IsNotFound
())
throw
leveldb_error
(
"
Database entry missing
"
);
throw
leveldb_error
(
"
Unknown database error
"
);
}
static
leveldb::Options
GetOptions
(
size_t
nCacheSize) {
leveldb::Options options;
options.
block_cache
=
leveldb::NewLRUCache
(nCacheSize /
2
);
options.
write_buffer_size
= nCacheSize /
4
;
//
up to two write buffers may be held in memory simultaneously
options.
filter_policy
=
leveldb::NewBloomFilterPolicy
(
10
);
options.
compression
= leveldb::
kNoCompression
;
options.
max_open_files
=
64
;
return
options;
}
CLevelDBWrapper::CLevelDBWrapper
(
const
boost::filesystem::path &path,
size_t
nCacheSize,
bool
fMemory
,
bool
fWipe
) {
penv =
NULL
;
readoptions.
verify_checksums
=
true
;
iteroptions.
verify_checksums
=
true
;
iteroptions.
fill_cache
=
false
;
syncoptions.
sync
=
true
;
options =
GetOptions
(nCacheSize);
options.
create_if_missing
=
true
;
if
(
fMemory
) {
penv =
leveldb::NewMemEnv
(
leveldb::Env::Default
());
options.
env
= penv;
}
else
{
if
(
fWipe
) {
LogPrintf
(
"
Wiping LevelDB in %s
\n
"
, path.
string
());
leveldb::DestroyDB
(path.
string
(), options);
}
boost::filesystem::create_directory
(path);
LogPrintf
(
"
Opening LevelDB in %s
\n
"
, path.
string
());
}
leveldb::Status status =
leveldb::DB::Open
(options, path.
string
(), &pdb);
HandleError
(status);
LogPrintf
(
"
Opened LevelDB successfully
\n
"
);
}
CLevelDBWrapper::~CLevelDBWrapper
() {
delete
pdb;
pdb =
NULL
;
delete
options.
filter_policy
;
options.
filter_policy
=
NULL
;
delete
options.
block_cache
;
options.
block_cache
=
NULL
;
delete
penv;
options.
env
=
NULL
;
}
bool
CLevelDBWrapper::WriteBatch
(CLevelDBBatch &batch,
bool
fSync
) throw(leveldb_error) {
leveldb::Status status = pdb->
Write
(
fSync
? syncoptions : writeoptions, &batch.
batch
);
HandleError
(status);
return
true
;
}
Back
|
FazBrowse Home
|
New Git URL