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

# ThreadFile(3cc)

This class defines a database I/O file service that can be shared by multiple threads. This class defines a database I/O file service that can be shared by multiple threads.

## NAME

ThreadFile - This class defines a database I/O file service that can be shared by multiple threads. This class defines a database I/O file service that can be shared by multiple threads.

## SYNOPSIS

`#include <file.h>`

Inherits **RandomFile**.

### Public Methods

**ThreadFile** (const char \*path)\
 *Open or create a new database file.* virtual **~ThreadFile** ()\
 *Close and finish a database file.* **Error** **restart** (void)\
 *Restart an existing database; close and re-open.* **Error** **fetch** (char \*address=NULL, **ccxx\_size\_t** length=0, off\_t position=-1)\
 *Fetch a portion of the file into physical memory.* **Error** **update** (char \*address=NULL, **ccxx\_size\_t** length=0, off\_t position=-1)\
 *Update a portion of a file from physical memory.* **Error** **append** (char \*address=NULL, **ccxx\_size\_t** length=0)\
 *Add new data to the end of the file.* off\_t **getPosition** (void)\
 *Fetch the current file position marker for this thread.* bool **operator++** (void)\
 bool **operator--** (void)\

## DETAILED DESCRIPTION

This class defines a database I/O file service that can be shared by multiple threads. This class defines a database I/O file service that can be shared by multiple threads.

All threads access a global copy of the database object, and mutex locks can be used to preserve transaction integrety. pread/pwrite calls can be used for optimized I/O when supported.

ThreadFile is meant for use by a threaded database server where multiple threads may each perform semi-independent operations on a given database table stored on disk. A special 'fcb' structure is used to hold file 'state', and pread/pwrite is used whenever possible for optimized I/O. On systems that do not offer pwread/pwrite, a **Mutex** lock is used to protect concurrent lseek and read/write operations. ThreadFile managed databases are assumed to be used only by the local server and through a single file descriptor.

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

## CONSTRUCTOR & DESTRUCTOR DOCUMENTATION

### ThreadFile::ThreadFile (const char \* path)

Open or create a new database file.

You should also use Initial.

**Parameters:**

- *path*

  *pathname of database to open.*

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

*Close and finish a database file.*

## MEMBER FUNCTION DOCUMENTATION

### Error ThreadFile::append (char \* address = NULL, ccxx\_size\_t length = 0)

*Add new data to the end of the file.*

**Parameters:**

- *address*

  *address to use, or NULL if same as last I/O.*

- *length*

  *length to use, or 0 if same as last I/O.*

### Error ThreadFile::fetch (char \* address = NULL, ccxx\_size\_t length = 0, off\_t position = -1)

*Fetch a portion of the file into physical memory.*

*This can use state information to fetch the current record multiple times.*

**Returns:**  *errSuccess on success.*

**Parameters:**

- *address*

  *address to use, or NULL if same as last I/O.*

- *length*

  *length to use, or 0 if same as last I/O.*

- *position*

  *file position to use -1 if same as last I/O.*

### off\_t ThreadFile::getPosition (void)

*Fetch the current file position marker for this thread.*

**Returns:**  *file position offset.*

### bool ThreadFile::operator++ (void)

### bool ThreadFile::operator-- (void)

### Error ThreadFile::restart (void)` [inline, virtual]`

*Restart an existing database; close and re-open.*

**Returns:**  *errSuccess if successful.*

*Reimplemented from* **RandomFile***.*

### Error ThreadFile::update (char \* address = NULL, ccxx\_size\_t length = 0, off\_t position = -1)

*Update a portion of a file from physical memory.*

*This can use state information to commit the last read record.*

**Returns:**  *errSuccess on success.*

**Parameters:**

- *address*

  *address to use, or NULL if same as last I/O.*

- *length*

  *length to use, or 0 if same as last I/O.*

- *position*

  *file position to use or -1 if same as last I/O.*

## AUTHOR

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