Go to the documentation of this file. 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);
495 #endif // STORAGE_FILEMANAGER_H
PageNumber GetNextFreePageNumber(FreePageList *fpl, BufferId meta_bufid)
Definition: FileManager.cpp:576
constexpr FileId MinRegularFileId
Definition: FileManager.h:106
constexpr bool IsWalFile() const
Definition: FileManager.h:466
std::string m_datadir
Definition: FileManager.h:291
PageNumber GetLastPageNumber() const
Returns the last page's PID.
Definition: FileManager.cpp:1006
LatchMode
Definition: Latch.h:11
std::unique_ptr< File > CreateTmpFile()
Definition: FileManager.cpp:306
void LoadMeta()
Definition: FileManager.cpp:248
void __real_taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
void __real_taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
void WritePage(PageNumber pid, const char *buf)
Writes a page at the specified page number.
Definition: FileManager.cpp:778
T Release()
Releases the underlying resource without relinquishing it and returns it to the caller.
Definition: ResourceGuard.h:137
constexpr PageNumber INVALID_PID
The invalid page number.
Definition: tdb_base.h:236
std::string GetMainDataFilePath(uint64_t DataFileId) const
Returns the path to the specified main data file.
Definition: FileManager.cpp:207
FileId m_fileid
Definition: FileManager.h:482
std::vector< std::unique_ptr< FSFile > > m_mainfiles
Definition: FileManager.h:299
constexpr FileId NEW_REGULAR_FID
Definition: FileManager.h:111
PageNumber AllocatePage()
Allocates a new page in the file and returns it page number.
Definition: FileManager.h:377
FMMetaPageData * m_meta
Definition: FileManager.h:301
void ReadPage(PageNumber pid, char *buf)
Reading a page pid in the main data file into buf.
Definition: FileManager.h:229
std::unique_ptr< File > OpenRegularFile(FileId fid)
Definition: FileManager.cpp:407
File()
Definition: FileManager.h:471
Definition: FileManager_private.h:91
std::unique_ptr< File > Open(FileId fid)
Creates or opens a virtual file.
Definition: FileManager.cpp:262
constexpr FileId INVALID_FID
Definition: FileManager.h:108
constexpr int FileIdBits
Definition: FileManager.h:105
FileId FindFreeFileId()
Definition: FileManager.cpp:448
uint64_t AllocatePageImpl(bool need_latch, LatchMode mode)
The actual implementation of AllocatePage().
Definition: FileManager.cpp:826
uint64_t BufferId
Definition: tdb_base.h:215
std::string m_tmpdir
Definition: FileManager.h:295
constexpr FileId MaxRegularFileId
Definition: FileManager.h:107
void AddToFreePageList(FreePageList *fpl, BufferId pg_bufid, BufferId meta_bufid)
Definition: FileManager.cpp:688
std::string m_waldir
Definition: FileManager.h:297
~File()
Destructor.
Definition: FileManager.cpp:719
std::string m_maindir
Definition: FileManager.h:293
constexpr FileId WAL_FILEID_MASK
Definition: FileManager.h:103
void FreePage(BufferId bufid)
Returns a page that belongs to this file to its free page list.
Definition: FileManager.cpp:921
FileManager exposes a virtual file interface based on FSFile.
Definition: FileManager.h:174
constexpr FileId NEW_TMP_FID
Definition: FileManager.h:112
PageNumber m_meta_pid
Definition: FileManager.h:485
std::mutex m_meta_latch
Definition: FileManager.h:289
void AllocateL2FileDirectory(BufferId fdir1_bufid, size_t fdir1_off)
Definition: FileManager.cpp:514
void InitFreePageList(FreePageList *fpl, PageNumber last_pg)
Definition: FileManager.cpp:569
std::mutex m_fsfile_extension_latch
Definition: FileManager.h:285
uint32_t FileId
The file ID.
Definition: tdb_base.h:222
constexpr bool IsMainFile() const
Definition: FileManager.h:456
constexpr FileId GetFileId() const
Definition: FileManager.h:451
std::mutex m_fdir1_latch
Definition: FileManager.h:287
~FileManager()
Definition: FileManager.cpp:25
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
constexpr bool IsTmpFile() const
Definition: FileManager.h:461
Represents an open virtual file managed by the FileManager.
Definition: FileManager.h:322
BufferId AllocatePage(LatchMode mode)
Allocates a new page in the file and returns a valid buffer ID where is pinned.
Definition: FileManager.h:388
void taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
Definition: FileManager_wrappable.cpp:13
std::unique_ptr< FSFile > m_fsfile
Definition: FileManager.h:488
void Close()
Closes the file.
Definition: FileManager.cpp:724
void FreePage(ScopedBufferId &bufid)
Same as FreePage(BufferId) but prevents double free.
Definition: FileManager.h:408
void FormatMeta()
Definition: FileManager.cpp:214
Definition: FileManager_private.h:99
std::unique_ptr< File > CreateRegularFile()
Definition: FileManager.cpp:338
void Flush()
Flushes bytes already written to the file.
Definition: FileManager.cpp:807
void __wrap_taco_fileman_readpage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, char *buf)
constexpr bool IsOpen() const noexcept
Definition: FileManager.h:335
std::unique_ptr< File > OpenTmpFile(FileId fid)
Definition: FileManager.cpp:331
PageNumber AllocatePageGroup()
Definition: FileManager.cpp:535
void CloseAll()
Definition: FileManager.cpp:31
void taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
Definition: FileManager_wrappable.cpp:34
void ReadPage(PageNumber pid, char *buf) const
Reads a page at the specified page number.
Definition: FileManager.cpp:749
void __wrap_taco_fileman_writepage_impl(::taco::FileManager *fileman, ::taco::PageNumber pid, const char *buf)
PageNumber GetFirstPageNumber() const
Returns the first page's PID.
Definition: FileManager.cpp:989
void Flush()
Flushes all buffered writes to the main data file to disk.
Definition: FileManager.cpp:713
constexpr FileId TMP_FILEID_MASK
Definition: FileManager.h:104
FileManager()
Definition: FileManager.cpp:15
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
uint32_t PageNumber
Definition: tdb_base.h:214