ROSE 0.11.145.147
|
Memory mapped file.
This buffer points to a file that is mapped into memory by the operating system. The API supports a common divisor for POSIX and Microsoft Windows and is therefore not all that powerful, but it does allow simple maps to be created that have a file as backing store. See http://www.boost.org/doc/libs for more information.
Access modes are the following enumerated constants:
boost::iostreams::mapped_file::readonly
: shared read-only access boost::iostreams::mapped_file::readwrite
: shared read/write access boost::iostreams::mapped_file::priv
: private read/write accessWhen a file is mapped with private access changes written to the buffer are not reflected in the underlying file.
Definition at line 46 of file MappedBuffer.h.
#include <Sawyer/MappedBuffer.h>
Public Types | |
typedef A | Address |
Type of addresses. | |
typedef T | Value |
Type of values. | |
typedef Buffer< A, T > | Super |
Type of base class. | |
Public Types inherited from Sawyer::Container::Buffer< A, T > | |
typedef SharedPointer< Buffer > | Ptr |
Reference counting smart pointer. | |
typedef A | Address |
Key type for addressing data. | |
typedef T | Value |
Type of values stored in the buffer. | |
Public Member Functions | |
Buffer< A, T >::Ptr | copy () const |
Create a new copy of buffer data. | |
Address | available (Address address) const |
Distance to end of buffer. | |
void | resize (Address n) |
Change the size of the buffer. | |
Address | read (Value *buf, Address address, Address n) const |
Reads data from a buffer. | |
Address | write (const Value *buf, Address address, Address n) |
Writes data to a buffer. | |
const Value * | data () const |
Data for the buffer. | |
Public Member Functions inherited from Sawyer::Container::Buffer< A, T > | |
virtual Address | size () const |
Size of buffer. | |
virtual void | sync () |
Synchronize buffer with persistent storage. | |
const std::string & | name () const |
Property: Name. | |
void | name (const std::string &s) |
Property: Name. | |
bool | copyOnWrite () const |
Property: Copy on write. | |
void | copyOnWrite (bool b) |
Property: Copy on write. | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Static Public Member Functions | |
static Buffer< A, T >::Ptr | instance (const boost::iostreams::mapped_file_params ¶ms) |
Map a file according to boost parameters. | |
static Buffer< A, T >::Ptr | instance (const boost::filesystem::path &path, boost::iostreams::mapped_file::mapmode mode=boost::iostreams::mapped_file::readonly, boost::intmax_t offset=0, boost::iostreams::mapped_file::size_type length=boost::iostreams::mapped_file::max_length) |
Map a file by name. | |
Protected Member Functions | |
MappedBuffer (const boost::iostreams::mapped_file_params ¶ms) | |
Protected Member Functions inherited from Sawyer::Container::Buffer< A, T > | |
Buffer (const std::string &name="") | |
typedef A Sawyer::Container::MappedBuffer< A, T >::Address |
Type of addresses.
Definition at line 51 of file MappedBuffer.h.
typedef T Sawyer::Container::MappedBuffer< A, T >::Value |
Type of values.
Definition at line 52 of file MappedBuffer.h.
typedef Buffer<A, T> Sawyer::Container::MappedBuffer< A, T >::Super |
Type of base class.
Definition at line 53 of file MappedBuffer.h.
|
inlineprotected |
Definition at line 140 of file MappedBuffer.h.
|
inlineexplicitprotected |
Definition at line 142 of file MappedBuffer.h.
|
inlinestatic |
Map a file according to boost parameters.
The parameters describe which file (by name) and part thereof should be mapped into memory.
Definition at line 149 of file MappedBuffer.h.
References Sawyer::Container::StaticBuffer< A, T >::instance().
Referenced by Sawyer::Container::MappedBuffer< A, T >::instance().
|
inlinestatic |
Map a file by name.
The specified file, which must already exist, is mapped into memory and pointed to by this new buffer.
Definition at line 167 of file MappedBuffer.h.
References Sawyer::Container::MappedBuffer< A, T >::instance().
|
inlinevirtual |
Create a new copy of buffer data.
Returns a new buffer containing the same data as the old buffer. Some buffer types cannot make an exact copy, in which case they should return an AllocatingBuffer that holds a snapshot of the source buffer's data as it existed at the time of this operation.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 182 of file MappedBuffer.h.
References Sawyer::Container::AllocatingBuffer< A, T >::instance(), and Sawyer::Container::Buffer< A, T >::size().
|
inlinevirtual |
Distance to end of buffer.
The distance in units of the Value type from the specified address (inclusive) to the last element of the buffer (inclusive). If the address is beyond the end of the buffer then a distance of zero is returned rather than a negative distance. Note that the return value will overflow to zero if the buffer spans the entire address space.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 194 of file MappedBuffer.h.
Referenced by Sawyer::Container::MappedBuffer< A, T >::read(), and Sawyer::Container::MappedBuffer< A, T >::write().
|
inlinevirtual |
Change the size of the buffer.
Truncates the buffer to a smaller size, or extends the buffer as necessary to make its size n
values.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 198 of file MappedBuffer.h.
References Sawyer::Container::Buffer< A, T >::size().
|
inlinevirtual |
Reads data from a buffer.
Reads up to n
values from this buffer beginning at the specified address and copies them to the caller-supplied argument. Returns the number of values actually copied, which may be smaller than the number requested. The output buffer is not zero-padded for short reads. Also note that the return value may overflow to zero if the entire address space is read.
As a special case, if buf
is a null pointer, then no data is copied and the return value indicates the number of values that would have been copied had buf
been non-null.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 203 of file MappedBuffer.h.
References Sawyer::Container::MappedBuffer< A, T >::available().
|
inlinevirtual |
Writes data to a buffer.
Writes up to n
values from buf
into this buffer starting at the specified address. Returns the number of values actually written, which might be smaller than n
. The return value will be less than n
if an error occurs, but note that the return value may overflow to zero if the entire address space is written.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 209 of file MappedBuffer.h.
References Sawyer::Container::MappedBuffer< A, T >::available().
|
inlinevirtual |
Data for the buffer.
Returns a pointer for the buffer data. Those subclasses that don't support this method will return the null pointer.
Implements Sawyer::Container::Buffer< A, T >.
Definition at line 215 of file MappedBuffer.h.