4.15 NDBFS块

此块提供NDB文件系统抽象层,并且位于目录中存储/ ndb / src /内核/块/ ndbfs,包含以下文件:

  • AsyncFile.hpp:定义了AsyncFile类,它表示异步文件。所有操作都与流程执行的其他活动同时执行。因为所有操作都是在单独的线程中执行的,所以操作的结果是通过内存通道发送回来的。对于完成请求的异步通知,每个调用都包含一个请求作为参数。该类用于与其他活动同时向磁盘写入或读取数据。

  • AsyncFile.cpp:定义异步文件可能的操作,并实现它们。

  • Filename.hpp:定义了文件名类。取一个128位值(作为四个长数组)并从中生成一个文件名。这个文件名编码关于文件的信息,例如它是一个文件还是一个目录,如果是前者,则文件的类型。可能的类型包括数据文件、片段日志、片段列表、表列表、架构日志和系统文件等等。

  • Filename.cpp:实现设置()方法文件名类。

  • MemoryChannelTest / MemoryChannelTest.cpp:用于测试内存通道读写的基本程序(即从循环缓冲区读写)。

  • OpenFiles.hpp:实现一个openfile类,它提供了一些方便的方法来确定给定文件是否已经打开。

  • VoidFs.cpp:用于无磁盘操作。生成一个确认写入操作。

  • CircularIndex.hpp:CircularIndex类作为实现循环缓冲区的构建块。它作为普通索引递增,直到达到最大大小,然后重置为零。

  • CircularIndex.cpp:仅包含一个#定义,实际上现在还没有使用。

  • MemoryChannel.hpp:定义了MemoryChannel而且MemoryChannelMultipleWriter类,它为两个线程之间的通信提供了一个基于指针的通道。它不会将任何数据复制到通道中或从通道中取出,因此放入的项在其他线程返回之前不能使用。不支持检测项目的返回。

  • MemoryChannel.cpp文件,此时未使用。

  • Ndbfs.hpp:因为一个NDB信号请求可以导致多个请求AsyncFile,一个类(在该文件中定义)负责跟踪所有未完成的请求,当所有请求完成时,将结果报告回发送块。

  • Ndbfs.cpp的初始化和信号处理方法Ndbfs类。

  • Pool.hpp:创建和管理对象池,供用户使用Ndbfs以及这个block中的其他类。

  • AsyncFileTest / AsyncFileTest.cpp:测试程序,用于测试和基准功能AsyncFile