Bitcoin ABC 0.26.3
P2P Digital Currency
|
Non-refcounted RAII wrapper around a FILE* that implements a ring buffer to deserialize from. More...
#include <streams.h>
Public Member Functions | |
CBufferedFile (FILE *fileIn, uint64_t nBufSize, uint64_t nRewindIn, int nTypeIn, int nVersionIn) | |
~CBufferedFile () | |
CBufferedFile (const CBufferedFile &)=delete | |
CBufferedFile & | operator= (const CBufferedFile &)=delete |
int | GetVersion () const |
int | GetType () const |
void | fclose () |
bool | eof () const |
check whether we're at the end of the source file | |
void | read (Span< std::byte > dst) |
read a number of bytes | |
void | SkipTo (const uint64_t file_pos) |
Move the read position ahead in the stream to the given position. | |
uint64_t | GetPos () const |
return the current reading position | |
bool | SetPos (uint64_t nPos) |
rewind to a given reading position | |
bool | SetLimit (uint64_t nPos=std::numeric_limits< uint64_t >::max()) |
Prevent reading beyond a certain position. | |
template<typename T > | |
CBufferedFile & | operator>> (T &&obj) |
void | FindByte (std::byte byte) |
search for a given byte in the stream, and remain positioned on it | |
Private Member Functions | |
bool | Fill () |
read data from the source to fill the buffer | |
std::pair< std::byte *, size_t > | AdvanceStream (size_t length) |
Advance the stream's read pointer (m_read_pos) by up to 'length' bytes, filling the buffer from the file so that at least one byte is available. | |
Private Attributes | |
const int | nType |
const int | nVersion |
FILE * | src |
source file | |
uint64_t | nSrcPos |
how many bytes have been read from source | |
uint64_t | nReadPos |
how many bytes have been read from this | |
uint64_t | nReadLimit |
up to which position we're allowed to read | |
uint64_t | nRewind |
how many bytes we guarantee to rewind | |
std::vector< std::byte > | vchBuf |
the buffer | |
Non-refcounted RAII wrapper around a FILE* that implements a ring buffer to deserialize from.
It guarantees the ability to rewind a given number of bytes.
Will automatically close the file when it goes out of scope if not null. If you need to close the file early, use file.fclose() instead of fclose(file).
|
inline |
|
delete |
Advance the stream's read pointer (m_read_pos) by up to 'length' bytes, filling the buffer from the file so that at least one byte is available.
Return a pointer to the available buffer data and the number of bytes (which may be less than the requested length) that may be accessed beginning at that pointer.
Definition at line 715 of file streams.h.
|
inline |
|
inline |
|
inlineprivate |
|
inline |
|
inline |
|
delete |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |