Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions

file Class Reference
[I/O primitives layer]

Defines interface of file. More...

#include <file.h>

Inheritance diagram for file:
Inheritance graph
[legend]

List of all members.

Public Types

enum  open_mode {
  RDONLY = 1, WRONLY = 2, RDWR = 4, CREAT = 8,
  DIRECT = 16, TRUNC = 32, SYNC = 64, NO_LOCK = 128
}
 

Definition of acceptable file open modes.

More...
typedef request::offset_type offset_type
typedef request::size_type size_type

Public Member Functions

virtual request_ptr aread (void *buffer, offset_type pos, size_type bytes, const completion_handler &on_cmpl)=0
 Schedules an asynchronous read request to the file.
virtual request_ptr awrite (void *buffer, offset_type pos, size_type bytes, const completion_handler &on_cmpl)=0
 Schedules an asynchronous write request to the file.
virtual void serve (const request *req)=0 throw (io_error)
void add_request_ref ()
void delete_request_ref ()
int get_request_nref ()
virtual void set_size (offset_type newsize)=0
 Changes the size of the file.
virtual offset_type size ()=0
 Returns size of the file.
virtual int get_queue_id () const =0
 Returns the identifier of the file's queue.
virtual int get_allocator_id () const =0
 Returns the file's allocator.
virtual int get_physical_device_id () const
virtual void lock ()=0
 Locks file for reading and writing (acquires a lock in the file system).
virtual void discard (offset_type offset, offset_type size)
 Discard a region of the file (mark it unused) some specialized file types may need to know freed regions.
virtual void export_files (offset_type offset, offset_type length, std::string prefix)
virtual void remove ()
virtual const char * io_type () const
 Identifies the type of I/O implementation.

Static Public Attributes

static const int DEFAULT_QUEUE = -1
static const int NO_QUEUE = -2
static const int NO_ALLOCATOR = -1

Protected Member Functions

 file ()
 Initializes file object.

Detailed Description

Defines interface of file.

It is a base class for different implementations that might base on various file systems or even remote storage interfaces

Examples:

io/test_cancel.cpp, and io/test_io_sizes.cpp.


Member Enumeration Documentation

Definition of acceptable file open modes.

Various open modes in a file system must be converted to this set of acceptable modes

Enumerator:
RDONLY 

only reading of the file is allowed

WRONLY 

only writing of the file is allowed

RDWR 

read and write of the file are allowed

CREAT 

in case file does not exist no error occurs and file is newly created

DIRECT 

I/Os proceed bypassing file system buffers, i.e. unbuffered I/O.

TRUNC 

once file is opened its length becomes zero

SYNC 

open the file with O_SYNC | O_DSYNC | O_RSYNC flags set

NO_LOCK 

do not aquire an exclusive lock by default


Constructor & Destructor Documentation

file::file (  )  [inline, protected]

Initializes file object.

Parameters:
_id file identifier
Remarks:
Called in implementations of file

Member Function Documentation

virtual request_ptr file::aread ( void *  buffer,
offset_type  pos,
size_type  bytes,
const completion_handler on_cmpl 
) [pure virtual]

Schedules an asynchronous read request to the file.

Parameters:
buffer pointer to memory buffer to read into
pos file position to start read from
bytes number of bytes to transfer
on_cmpl I/O completion handler
Returns:
request_ptr request object, which can be used to track the status of the operation

Implemented in disk_queued_file.

Referenced by typed_block< RawSize_, T_, NRef_, InfoType_ >::read().

virtual request_ptr file::awrite ( void *  buffer,
offset_type  pos,
size_type  bytes,
const completion_handler on_cmpl 
) [pure virtual]

Schedules an asynchronous write request to the file.

Parameters:
buffer pointer to memory buffer to write from
pos starting file position to write
bytes number of bytes to transfer
on_cmpl I/O completion handler
Returns:
request_ptr request object, which can be used to track the status of the operation

Implemented in disk_queued_file.

Referenced by typed_block< RawSize_, T_, NRef_, InfoType_ >::write().

virtual void file::discard ( offset_type  offset,
offset_type  size 
) [inline, virtual]

Discard a region of the file (mark it unused) some specialized file types may need to know freed regions.

Reimplemented in fileperblock_file< base_file_type >, and mem_file.

Referenced by block_manager::delete_block().

virtual int file::get_allocator_id (  )  const [pure virtual]

Returns the file's allocator.

Returns:
allocator number

Implemented in disk_queued_file.

Referenced by block_manager::delete_block().

virtual int file::get_queue_id (  )  const [pure virtual]

Returns the identifier of the file's queue.

Remarks:
Files allocated on the same physical device usually share the same queue
Returns:
queue number

Implemented in disk_queued_file.

Referenced by request_with_state::cancel().

virtual const char* file::io_type (  )  const [inline, virtual]

Identifies the type of I/O implementation.

Returns:
pointer to null terminated string of characters, containing the name of I/O implementation

Reimplemented in fileperblock_file< base_file_type >, mem_file, mmap_file, syscall_file, ufs_file_base, and wbtl_file.

Referenced by serving_request::io_type().

virtual void file::lock (  )  [pure virtual]

Locks file for reading and writing (acquires a lock in the file system).

Implemented in fileperblock_file< base_file_type >, mem_file, ufs_file_base, and wbtl_file.

virtual void file::set_size ( offset_type  newsize  )  [pure virtual]

Changes the size of the file.

Parameters:
newsize new file size

Implemented in fileperblock_file< base_file_type >, mem_file, and ufs_file_base.

Referenced by vector< Tp_, PgSz_, PgTp_, BlkSize_, AllocStr_, SzTp_ >::vector().

virtual offset_type file::size (  )  [pure virtual]

Returns size of the file.

Returns:
file size in bytes

Implemented in fileperblock_file< base_file_type >, mem_file, ufs_file_base, and wbtl_file.


The documentation for this class was generated from the following file: