FBB::MmapBuf - a std::streambuf using mmap(2) for file I/O
Contents
Bobcat
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
Bobcat Project Files
o https://fbb-git.gitlab.io/bobcat/: gitlab project page;
Debian Bobcat project files:
o libbobcat6: debian package containing the shared library, changelog and copyright note;
o libbobcat-dev: debian package containing the static library, headers, manual pages, and developer
info;
Bugs
None Reported.
Constructors
o MmapBuf():
The default constructor merely constructs an empty MmapBuf object. To change it to a usable object
use move assignment;
o MmapBuf(std::stringconst&fname,std::ios::openmodeopenMode,charconst*bufSize=0,mode_tmode=0644):
The constructor initializes the MmapBuf object for a file named fname. The openmode can be any
combination of the std::ios::openmode values. The required values are usually provided when
constructing ImapStream,OmapStream, or IOmapStream objects (cf. section SEEALSO below).
The opnemMode parameter specifies how fname is used. The standard ios::in,ios::out,ios::trunc,ios::app, and ios::ate modes are supported.
By default bfMmapBuf uses a mapping buffer size of 10 times the standard page size, (cf.
sysconf(3), and the member pageSize below). The size of the mapping buffer can also be specified
using the bufSize parameter. To specify it use a value followed by K,M, or G, representing, resp.
1024, 1024 * 1024, and 1024 * 1024 * 1024 bytes. The final buffer size is at least equal to the
standard page size. When a larger value is specified the used buffer size is set to specified/pageSize*pageSize.
The mode parameter specifies the user/group/other access mode which is used when the file is created by
MmapBuf. Its default value specifies read/write access by the user, and read access by others. )
The move constructor and move assignment operator are available.
The copy constructor and copy assignment operator are not available.
Copyright
This is free software, distributed under the terms of the GNU General Public License (GPL).
Description
The mmap(2) functions map files in the virtual address space of the calling process. Using mmap in C++ is
doable, but complex. The MmapBufstd::streambuf class embeds the features of mmap(2), allowing the use of
C++’s streams instead of using the raw mmap calls. the FBB::Mmapbase class defines a std::streambuf which
can be used by istream,ostream, and iostream objects.
An std::exception is thrown, and an error message is written to cerr if the details about the specified
filename (cf. section CONSTRUCORS cannot be determined, or when mmap or munmap return errors.
Example
An example is provided in bobcat’s source archive and gitlab repository at bobcat/mmapbuf/demo.
Files
bobcat/mmapbuf - defines the class interface
Inherits From
std::streambuf
Member Functions
All members of std::stringstream are available, as FBB::MmapBuf inherits from that class.
o size_tbufSize()const:
returns the used t(mmap) buffer size;
o size_tfileSize()const:
returns the size of the used file. The size is updated to a larger size when writing beyond the
current file size. Once MmapBuf objects cease to exist the used file’s size is modified to the
current fileSize value. The size of a file that can only be read is never altered.
o size_tpageSize()const:
returns the smallest page size used by t(mmap).
Name
FBB::MmapBuf - a std::streambuf using mmap(2) for file I/O
Namespace
FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the
namespace FBB.
See Also
bobcat(7), chmod(2), immapstream(3bobcat), iommapstream(3bobcat), ommapstream(3bobcat), mmap(2), sysconf(3)
Synopsis
#include<bobcat/mmapbuf>
Linking option: -lbobcat