此块提供 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
的功能。