This block provides the NDB
file system
abstraction layer, and is located in the directory
storage/ndb/src/kernel/blocks/ndbfs
, which
contains the following files:
AsyncFile.hpp
.
Defines the AsyncFile
class, which
represents an asynchronous file. All actions are
executed concurrently with the other activities carried
out by the process. Because all actions are performed in
a separate thread, the result of an action is sent back
through a memory channel. For the asyncronous
notification of a finished request, each callincludes a
request as a parameter. This class is used for writing
or reading data to and from disk concurrently with other
activities.
AsyncFile.cpp
.
Defines the actions possible for an asynchronous file,
and implements them.
Filename.hpp
.
Defines the Filename
class. Takes a
128-bit value (as a array of four longs) and makes a
file name out of it. This file name encodes information
about the file, such as whether it is a file or a
directory, and if the former, the type of file. Possible
types include data file, fragment log, fragment list,
table list, schema log, and system file, among others.
Filename.cpp
.
Implements set()
methods for the
Filename
class.
MemoryChannelTest/MemoryChannelTest.cpp
.
Basic program for testing reads from and writes to a
memory channel (that is, reading from and writing to a
circular buffer).
OpenFiles.hpp
.
Implements an OpenFiles
class, which
implements some convenience methods for determining
whether or not a given file is already open.
VoidFs.cpp
.
Used for diskless operation. Generates a
“dummy” acjknowledgement to write
operations.
CircularIndex.hpp
.
The CircularIndex
class, defined in
this file, serves as the building block for implementing
circular buffers. It increments as a normal index until
it reaches maximum size, then resets to zero.
CircularIndex.cpp
.
Contains only a single #define
, not
actually used at this time.
MemoryChannel.hpp
.
Defines the MemoryChannel
and
MemoryChannelMultipleWriter
classes,
which provide a pointer-based channel for communication
between two threads. It does not copy any data into or
out of the channel, so the item that is put in can not
be used untill the other thread has given it back. There
is no support for detecting the return of an item.
MemoryChannel.cpp
.
“Dummy” file, not used at this time.
Ndbfs.hpp
.
Because an NDB
signal request can
result in multiple requests to
AsyncFile
, one class (defined in this
file) is responsible for keeping track of all
outstanding requests, and when all are finished,
reporting the outcome back to the sending block.
Ndbfs.cpp
.
Implements initialization and signal-handling methods
for the Ndbfs
class.
Pool.hpp
.
Creates and manages a pool of objects for use by
Ndbfs
and other classes in this
block.
AsyncFileTest/AsyncFileTest.cpp
.
Test program, used to test and benchmark functionality
of AsyncFile
.