oracular (3) mmapbuf.3bobcat.gz

Provided by: libbobcat-dev_6.06.01-1_amd64 bug

NAME

       FBB::MmapBuf - a std::streambuf using mmap(2) for file I/O

SYNOPSIS

       #include <bobcat/mmapbuf>

       Linking option: -lbobcat

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 MmapBuf std::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.

NAMESPACE

       FBB
       All  constructors,  members,  operators  and manipulators, mentioned in this man-page, are defined in the
       namespace FBB.

INHERITS FROM

       std::streambuf

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::string  const  &fname,  std::ios::openmode  openMode, char const *bufSize = 0, mode_t
              mode = 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 SEE ALSO 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.

MEMBER FUNCTIONS

       All members of std::stringstream are available, as FBB::MmapBuf inherits from that class.

       o      size_t bufSize() const:
              returns the used t(mmap) buffer size;

       o      size_t fileSize() 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_t pageSize() const:
              returns the smallest page size used by t(mmap).

EXAMPLE

       An example is provided in bobcat’s source archive and gitlab repository at bobcat/mmapbuf/demo.

FILES

       bobcat/mmapbuf - defines the class interface

SEE ALSO

       bobcat(7),   chmod(2),   immapstream(3bobcat),   iommapstream(3bobcat),   ommapstream(3bobcat),  mmap(2),
       sysconf(3)

BUGS

       None Reported.

BOBCAT PROJECT FILES

       o      https://fbb-git.gitlab.io/bobcat/: gitlab project page;

       o      bobcat_6.06.01-x.dsc: detached signature;

       o      bobcat_6.06.01-x.tar.gz: source archive;

       o      bobcat_6.06.01-x_i386.changes: change log;

       o      libbobcat1_6.06.01-x_*.deb: debian package containing the libraries;

       o      libbobcat1-dev_6.06.01-x_*.deb: debian package containing the libraries, headers and manual pages;

BOBCAT

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

       This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).