---
name: "MappedFile"
section: "3cc"
platform: "linux"
package: "libcommoncpp2-dev"
version: "1.0.13-5"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/MappedFile"
---

# MappedFile(3cc)

Create and map a disk file into memory. Map a named disk file into memory.

## NAME

MappedFile - Create and map a disk file into memory. Map a named disk file into memory.

## SYNOPSIS

`#include <file.h>`

Inherits **RandomFile**.

### Public Methods

**MappedFile** (const char \*fname, **Access** mode)\
 *Open a file for mapping.* **MappedFile** (const char \*fname, **pos\_t** offset, size\_t **size**, **Access** mode)\
 *Map a portion or all of a specified file in the specified shared memory access mode.* virtual **~MappedFile** ()\
 *Release a mapped section of memory associated with a file.* void **sync** (void)\
 *Synchronize the contents of the mapped portion of memory with the disk file and wait for completion.* void **sync** (char \*address, size\_t len)\
 *Synchronize a segment of memory mapped from a segment fetch.* void **update** (size\_t offset=0, size\_t len=0)\
 *Map a portion of the memory mapped from the file back to the file and do not wait for completion.* void **update** (char \*address, size\_t len)\
 *Update a mapped region back to disk as specified by address and length.* void **release** (char \*address, size\_t len)\
 *Release (unmap) a memory segment.* char \* **fetch** (size\_t offset=0)\
 *Fetch a pointer to an offset within the memory mapped portion of the disk file.* char \* **fetch** (off\_t pos, size\_t len)\
 *Fetch and map a portion of a disk file to a logical memory block.*

## DETAILED DESCRIPTION

Create and map a disk file into memory. Map a named disk file into memory.

This portable class works under both Posix via mmap and under the win32 API. A mapped file can be referenced directly by it's memory segment. One can map  and unmap portions of a file on demand, and update changed memory pages mapped from files immediately through **sync()**.

**Author:**  David Sugar \<dyfet@ostel.com\>

**Todo:** \
  implement in win32

## CONSTRUCTOR & DESTRUCTOR DOCUMENTATION

### MappedFile::MappedFile (const char \* fname, Access mode)

Open a file for mapping.

More than one segment of a file may be mapped into seperate regions of memory.

**Parameters:**

- *fname*

  *file name to access for mapping.*

- *mode*

  *access mode to map file.*

### MappedFile::MappedFile (const char \* fname, pos\_t offset, size\_t size, Access mode)

*Map a portion or all of a specified file in the specified shared memory access mode.*

*Valid mapping modes include mappedRead, mappedWrite, and mappedReadWrite.*

**Parameters:**

- *fname*

  *pathname of file to map into memory.*

- *offset*

  *from start of file to begin mapping in bytes.*

- *size*

  *of mapped area in bytes.*

- *mode*

  *to map file.*

### virtual MappedFile::~MappedFile ()` [virtual]`

*Release a mapped section of memory associated with a file.*

*The mapped area is updated back to disk.*

## MEMBER FUNCTION DOCUMENTATION

### char\* MappedFile::fetch (off\_t pos, size\_t len)

*Fetch and map a portion of a disk file to a logical memory block.*

**Returns:**  *pointer to memory segment.*

**Parameters:**

- *pos*

  *offset of file segment to map.*

- *len*

  *size of memory segment to map.*

### char\* MappedFile::fetch (size\_t offset = 0)` [inline]`

*Fetch a pointer to an offset within the memory mapped portion of the disk file.*

*This really is used for convience of matching operations between Update and Fetch, as one could simply have accessed the base pointer where the file was mapped directly.*

**Parameters:**

- *offset*

  *from start of mapped memory.*

### void MappedFile::release (char \* address, size\_t len)

*Release (unmap) a memory segment.*

**Parameters:**

- *address*

  *address of memory segment to release.*

- *len*

  *length of memory segment to release.*

### void MappedFile::sync (char \* address, size\_t len)

*Synchronize a segment of memory mapped from a segment fetch.*

**Parameters:**

- *address*

  *memory address to update.*

- *len*

  *size of segment.*

### void MappedFile::sync (void)` [inline]`

*Synchronize the contents of the mapped portion of memory with the disk file and wait for completion.*

*This assures the memory mapped from the file is written back.*

### void MappedFile::update (char \* address, size\_t len)

*Update a mapped region back to disk as specified by address and length.*

**Parameters:**

- *address*

  *address of segment.*

- *len*

  *length of segment.*

### void MappedFile::update (size\_t offset = 0, size\_t len = 0)

*Map a portion of the memory mapped from the file back to the file and do not wait for completion.*

*This is useful when mapping a database file and updating a single record.*

**Parameters:**

- *offset*

  *offset into the mapped region of memory.*

- *len*

  *length of partial region (example, record length).*

## AUTHOR

*Generated automatically by Doxygen for CommonC++ from the source code.*
