Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
flatfile.h
Go to the documentation of this file.
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#ifndef BITCOIN_FLATFILE_H
7
#define BITCOIN_FLATFILE_H
8
9
#include <string>
10
11
#include <
serialize.h
>
12
#include <
util/fs.h
>
13
14
struct
FlatFilePos
15
{
16
int32_t
nFile
{-1};
17
uint32_t
nPos
{0};
18
19
SERIALIZE_METHODS
(
FlatFilePos
, obj) {
READWRITE
(
VARINT_MODE
(obj.nFile,
VarIntMode::NONNEGATIVE_SIGNED
),
VARINT
(obj.nPos)); }
20
21
FlatFilePos
() =
default
;
22
23
FlatFilePos
(int32_t nFileIn, uint32_t nPosIn)
24
:
nFile
{nFileIn},
25
nPos
{nPosIn}
26
{}
27
28
friend
bool
operator==
(
const
FlatFilePos
&a,
const
FlatFilePos
&b) {
29
return
(a.
nFile
== b.
nFile
&& a.
nPos
== b.
nPos
);
30
}
31
32
bool
IsNull
()
const
{
return
(
nFile
== -1); }
33
34
std::string
ToString
()
const
;
35
};
36
41
class
FlatFileSeq
42
{
43
private
:
44
const
fs::path
m_dir
;
45
const
char
*
const
m_prefix
;
46
const
size_t
m_chunk_size
;
47
48
public
:
56
FlatFileSeq
(fs::path dir,
const
char
*
prefix
,
size_t
chunk_size);
57
59
fs::path
FileName
(
const
FlatFilePos
& pos)
const
;
60
62
FILE*
Open
(
const
FlatFilePos
& pos,
bool
read_only =
false
)
const
;
63
73
size_t
Allocate
(
const
FlatFilePos
& pos,
size_t
add_size,
bool
& out_of_space)
const
;
74
82
bool
Flush
(
const
FlatFilePos
& pos,
bool
finalize =
false
)
const
;
83
};
84
85
#endif
// BITCOIN_FLATFILE_H
FlatFileSeq::Open
FILE * Open(const FlatFilePos &pos, bool read_only=false) const
Open a handle to the file at the given position.
Definition
flatfile.cpp:34
FlatFileSeq::FileName
fs::path FileName(const FlatFilePos &pos) const
Get the name of the file at the given position.
Definition
flatfile.cpp:29
FlatFileSeq::Flush
bool Flush(const FlatFilePos &pos, bool finalize=false) const
Commit a file to disk, and optionally truncate off extra pre-allocated bytes if final.
Definition
flatfile.cpp:87
FlatFileSeq::m_dir
const fs::path m_dir
Definition
flatfile.h:44
FlatFileSeq::Allocate
size_t Allocate(const FlatFilePos &pos, size_t add_size, bool &out_of_space) const
Allocate additional space in a file after the given starting position.
Definition
flatfile.cpp:58
FlatFileSeq::m_chunk_size
const size_t m_chunk_size
Definition
flatfile.h:46
FlatFileSeq::m_prefix
const char *const m_prefix
Definition
flatfile.h:45
FlatFileSeq::FlatFileSeq
FlatFileSeq(fs::path dir, const char *prefix, size_t chunk_size)
Constructor.
Definition
flatfile.cpp:14
fs.h
prefix
const char * prefix
Definition
rest.cpp:1141
serialize.h
VARINT
#define VARINT(obj)
Definition
serialize.h:491
VARINT_MODE
#define VARINT_MODE(obj, mode)
Definition
serialize.h:490
VarIntMode::NONNEGATIVE_SIGNED
@ NONNEGATIVE_SIGNED
Definition
serialize.h:396
READWRITE
#define READWRITE(...)
Definition
serialize.h:145
FlatFilePos
Definition
flatfile.h:15
FlatFilePos::operator==
friend bool operator==(const FlatFilePos &a, const FlatFilePos &b)
Definition
flatfile.h:28
FlatFilePos::FlatFilePos
FlatFilePos()=default
FlatFilePos::nPos
uint32_t nPos
Definition
flatfile.h:17
FlatFilePos::ToString
std::string ToString() const
Definition
flatfile.cpp:24
FlatFilePos::FlatFilePos
FlatFilePos(int32_t nFileIn, uint32_t nPosIn)
Definition
flatfile.h:23
FlatFilePos::SERIALIZE_METHODS
SERIALIZE_METHODS(FlatFilePos, obj)
Definition
flatfile.h:19
FlatFilePos::IsNull
bool IsNull() const
Definition
flatfile.h:32
FlatFilePos::nFile
int32_t nFile
Definition
flatfile.h:16
Generated on
for Bitcoin Core by
1.17.0