1 #ifndef STORAGE_FILEMANAGER_H
2 #define STORAGE_FILEMANAGER_H
100 static_assert(std::is_standard_layout<PageHeaderData>::value &&
101 std::is_trivial<PageHeaderData>::value);
200 void Init(std::string datadir,
size_t init_size,
bool create);
void taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
Definition: FileManager_wrappable.cpp:13
void taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
Definition: FileManager_wrappable.cpp:34
void __wrap_taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
void __real_taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
void __real_taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
void __wrap_taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
FileManager exposes a virtual file interface based on FSFile.
Definition: FileManager.h:174
void CloseAll()
Definition: FileManager.cpp:31
~FileManager()
Definition: FileManager.cpp:25
FileId FindFreeFileId()
Definition: FileManager.cpp:445
void WritePage(PageNumber pid, const char *buf)
Writing a buffered page in buf to the page pid in the main data file.
Definition: FileManager.h:242
std::unique_ptr< File > CreateTmpFile()
Definition: FileManager.cpp:304
void AllocateL2FileDirectory(BufferId fdir1_bufid, size_t fdir1_off)
Definition: FileManager.cpp:511
std::string m_maindir
Definition: FileManager.h:293
void InitFreePageList(FreePageList *fpl, PageNumber last_pg)
Definition: FileManager.cpp:566
std::unique_ptr< File > Open(FileId fid)
Creates or opens a virtual file.
Definition: FileManager.cpp:262
std::vector< std::unique_ptr< FSFile > > m_mainfiles
Definition: FileManager.h:299
void Init(std::string datadir, size_t init_size, bool create)
Initializes the FileManager with a specified data directory path datadir.
Definition: FileManager.cpp:117
std::unique_ptr< File > OpenTmpFile(FileId fid)
Definition: FileManager.cpp:329
std::mutex m_fdir1_latch
Definition: FileManager.h:287
void ReadPage(PageNumber pid, char *buf)
Reading a page pid in the main data file into buf.
Definition: FileManager.h:229
std::mutex m_fsfile_extension_latch
Definition: FileManager.h:285
std::string m_tmpdir
Definition: FileManager.h:295
std::string GetMainDataFilePath(uint64_t DataFileId) const
Returns the path to the specified main data file.
Definition: FileManager.cpp:207
std::unique_ptr< File > OpenRegularFile(FileId fid)
Definition: FileManager.cpp:404
void LoadMeta()
Definition: FileManager.cpp:248
void Flush()
Flushes all buffered writes to the main data file to disk.
Definition: FileManager.cpp:709
std::string m_datadir
Definition: FileManager.h:291
std::mutex m_meta_latch
Definition: FileManager.h:289
void AddToFreePageList(FreePageList *fpl, BufferId pg_bufid, BufferId meta_bufid)
Definition: FileManager.cpp:684
FMMetaPageData * m_meta
Definition: FileManager.h:301
std::string m_waldir
Definition: FileManager.h:297
PageNumber GetNextFreePageNumber(FreePageList *fpl, BufferId meta_bufid)
Definition: FileManager.cpp:573
void FormatMeta()
Definition: FileManager.cpp:214
std::unique_ptr< File > CreateRegularFile()
Definition: FileManager.cpp:336
PageNumber AllocatePageGroup()
Definition: FileManager.cpp:532
FileManager()
Definition: FileManager.cpp:15
Represents an open virtual file managed by the FileManager.
Definition: FileManager.h:322
PageNumber AllocatePage()
Allocates a new page in the file and returns it page number.
Definition: FileManager.h:377
FileId m_fileid
Definition: FileManager.h:483
PageNumber GetLastPageNumber() const
Returns the last page's PID.
Definition: FileManager.cpp:1000
File()
Definition: FileManager.h:472
void WritePage(PageNumber pid, const char *buf)
Writes a page at the specified page number.
Definition: FileManager.cpp:773
void ReadPage(PageNumber pid, char *buf) const
Reads a page at the specified page number.
Definition: FileManager.cpp:745
void Close()
Closes the file.
Definition: FileManager.cpp:720
BufferId AllocatePage(LatchMode mode)
Allocates a new page in the file and returns a valid buffer ID where is pinned.
Definition: FileManager.h:389
void FreePage(ScopedBufferId &bufid)
Same as FreePage(BufferId) but prevents double free.
Definition: FileManager.h:409
void Flush()
Flushes bytes already written to the file.
Definition: FileManager.cpp:802
PageNumber m_meta_pid
Definition: FileManager.h:486
constexpr bool IsMainFile() const
Definition: FileManager.h:457
std::unique_ptr< FSFile > m_fsfile
Definition: FileManager.h:489
~File()
Destructor.
Definition: FileManager.cpp:715
constexpr bool IsOpen() const noexcept
Definition: FileManager.h:335
constexpr FileId GetFileId() const
Definition: FileManager.h:452
constexpr bool IsTmpFile() const
Definition: FileManager.h:462
void FreePage(BufferId bufid)
Returns a page that belongs to this file to its free page list.
Definition: FileManager.cpp:915
uint64_t AllocatePageImpl(bool need_latch, LatchMode mode)
The actual implementation of AllocatePage().
Definition: FileManager.cpp:820
constexpr bool IsWalFile() const
Definition: FileManager.h:467
PageNumber GetFirstPageNumber() const
Returns the first page's PID.
Definition: FileManager.cpp:983
T Release()
Releases the underlying resource without relinquishing it and returns it to the caller.
Definition: ResourceGuard.h:137
constexpr int FileIdBits
Definition: FileManager.h:105
constexpr FileId MinRegularFileId
Definition: FileManager.h:106
LatchMode
Definition: Latch.h:11
constexpr FileId INVALID_FID
Definition: FileManager.h:108
uint64_t BufferId
Definition: tdb_base.h:214
uint32_t FileId
The file ID.
Definition: tdb_base.h:221
constexpr FileId WAL_FILEID_MASK
Definition: FileManager.h:103
uint32_t PageNumber
Definition: tdb_base.h:213
constexpr FileId NEW_REGULAR_FID
Definition: FileManager.h:111
constexpr FileId MaxRegularFileId
Definition: FileManager.h:107
constexpr FileId TMP_FILEID_MASK
Definition: FileManager.h:104
constexpr FileId NEW_TMP_FID
Definition: FileManager.h:112
constexpr PageNumber INVALID_PID
The invalid page number.
Definition: tdb_base.h:235
Definition: FileManager_private.h:99
Definition: FileManager_private.h:91