此區塊提供 NDB
檔案系統抽象層,位於目錄 storage/ndb/src/kernel/blocks/ndbfs
中,其中包含以下檔案
AsyncFile.hpp
:定義AsyncFile
類別,代表非同步檔案。所有動作都與程序執行的其他活動並行執行。由於所有動作都在個別執行緒中執行,因此動作結果會透過記憶體通道傳回。為了非同步通知完成的請求,每個呼叫都包含一個請求作為參數。此類別用於與其他活動並行讀取或寫入資料至磁碟。AsyncFile.cpp
:定義非同步檔案可執行的動作,並實作這些動作。Filename.hpp
:定義Filename
類別。接收一個 128 位元值(作為四個長的陣列)並以此產生檔案名稱。此檔案名稱會編碼有關檔案的資訊,例如它是檔案還是目錄,如果是檔案,則會編碼檔案類型。可能的類型包括資料檔、片段日誌、片段清單、表格清單、綱要日誌和系統檔等等。Filename.cpp
:實作Filename
類別的set()
方法。MemoryChannelTest/MemoryChannelTest.cpp
:用於測試記憶體通道讀寫(即讀寫環形緩衝區)的基本程式。OpenFiles.hpp
:實作OpenFiles
類別,該類別提供一些便利方法,用於判斷指定的檔案是否已開啟。VoidFs.cpp
:用於無磁碟作業。產生一個針對寫入操作的「虛擬」確認。CircularIndex.hpp
:此檔案中定義的CircularIndex
類別,作為實作環形緩衝區的基礎模組。它會以一般索引的方式遞增,直到達到最大大小,然後重設為零。CircularIndex.cpp
:僅包含單一#define
,目前未實際使用。MemoryChannel.hpp
:定義MemoryChannel
和MemoryChannelMultipleWriter
類別,提供基於指標的通道,用於在兩個執行緒之間通訊。它不會將任何資料複製到通道中或從通道中複製出來,因此放入的項目在另一個執行緒將其傳回之前無法使用。不支援偵測項目的傳回。MemoryChannel.cpp
:「虛擬」檔案,目前未使用。Ndbfs.hpp
:由於NDB
信號請求可能會導致對AsyncFile
的多個請求,因此有一個類別(在此檔案中定義)負責追蹤所有未完成的請求,並在所有請求完成時將結果回報給傳送區塊。Ndbfs.cpp
:實作Ndbfs
類別的初始化和信號處理方法。Pool.hpp
:建立並管理物件集區,供Ndbfs
和此區塊中的其他類別使用。AsyncFileTest/AsyncFileTest.cpp
:測試程式,用於測試和基準化AsyncFile
的功能。