---
name: "ost_ThreadFile"
section: "3"
platform: "linux"
package: "libcommoncpp2-doc"
version: "1.8.1-10"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/ost_ThreadFile"
---

# ost\_ThreadFile(3)

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

## NAME

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

## SYNOPSIS

`#include <file.h>`

Inherits **ost::RandomFile**.

### Public Member Functions

**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** (caddr\_t address=NULL, **ccxx\_size\_t** length=0, off\_t position=-1)\
 Fetch a portion of the file into physical memory.  **Error** **update** (caddr\_t address=NULL, **ccxx\_size\_t** length=0, off\_t position=-1)\
 Update a portion of a file from physical memory.  **Error** **append** (caddr\_t 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)\

### Additional Inherited Members

## Detailed Description

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

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

## Constructor & Destructor Documentation

### ost::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 ost::ThreadFile::~ThreadFile ()` [virtual]`

Close and finish a database file.

## Member Function Documentation

### Error ost::ThreadFile::append (caddr\_t 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 ost::ThreadFile::fetch (caddr\_t 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 ost::ThreadFile::getPosition (void)

Fetch the current file position marker for this thread.

**Returns**

file position offset.

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

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

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

Restart an existing database; close and re-open.

**Returns**

errSuccess if successful.

Reimplemented from **ost::RandomFile**.

### Error ost::ThreadFile::update (caddr\_t 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 GNU CommonC++ from the source code.
