此块提供NDB
文件系统抽象层,位于目录
storage/ndb/src/kernel/blocks/ndbfs
中,其中包含以下文件:
AsyncFile.hpp
: 定义AsyncFile
类,代表一个异步文件。所有操作都与流程执行的其他活动同时执行。因为所有操作都在单独的线程中执行,所以操作的结果通过内存通道发回。对于已完成请求的异步通知,每个调用都包含一个请求作为参数。此类用于与其他活动同时向磁盘写入数据或从磁盘读取数据。AsyncFile.cpp
:定义异步文件可能的操作,并实现它们。Filename.hpp
: 定义Filename
类。获取一个 128 位值(作为一个包含四个长整型的数组)并从中生成一个文件名。此文件名编码有关文件的信息,例如它是文件还是目录,如果是前者,则为文件类型。可能的类型包括数据文件、片段日志、片段列表、表列表、模式日志和系统文件等。Filename.cpp
:实现 类set()
的方法Filename
。MemoryChannelTest/MemoryChannelTest.cpp
: 测试内存通道读写的基本程序(即循环缓冲区的读写)。OpenFiles.hpp
:实现一个OpenFiles
类,它提供了一些方便的方法来确定给定文件是否已经打开。VoidFs.cpp
:用于无盘操作。生成一个“虚拟”确认写入操作。CircularIndex.hpp
:该CircularIndex
文件中定义的类用作实现循环缓冲区的构建块。它作为普通索引递增,直到达到最大大小,然后重置为零。CircularIndex.cpp
: 只包含一个#define
, 目前没有实际使用。MemoryChannel.hpp
: 定义MemoryChannel
和MemoryChannelMultipleWriter
类,它们为两个线程之间的通信提供基于指针的通道。它不会将任何数据复制到通道中或从通道中复制出来,因此在另一个线程将其归还之前,无法使用放入的项目。不支持检测物品的退货。MemoryChannel.cpp
: “ Dummy ” 文件,此时不用。Ndbfs.hpp
:因为一个NDB
信号请求可能导致对 的多个请求AsyncFile
,一个类(在此文件中定义)负责跟踪所有未完成的请求,并在所有请求完成后,将结果报告回发送块。Ndbfs.cpp
:为类实现初始化和信号处理方法Ndbfs
。Pool.hpp
:创建和管理一个对象池,供Ndbfs
此块中的其他类使用。AsyncFileTest/AsyncFileTest.cpp
: 测试程序,用于测试和基准测试功能AsyncFile
。