STXXL  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stxxl::file Class Referenceabstract

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:
examples/applications/skew3.cpp, and examples/containers/copy_file.cpp.

Definition at line 52 of file file.h.

+ Inheritance diagram for stxxl::file:
+ Collaboration diagram for stxxl::file:

Public Types

typedef request::offset_type offset_type
 the offset of a request, also the size of the file More...
 
enum  open_mode {
  RDONLY = 1, WRONLY = 2, RDWR = 4, CREAT = 8,
  DIRECT = 16, TRUNC = 32, SYNC = 64, NO_LOCK = 128,
  REQUIRE_DIRECT = 256
}
 Definition of acceptable file open modes. More...
 
typedef request::size_type size_type
 the size of a request More...
 

Public Member Functions

virtual ~file ()
 
void add_request_ref ()
 
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. More...
 
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. More...
 
virtual void close_remove ()
 close and remove file More...
 
void delete_request_ref ()
 
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. More...
 
virtual void export_files (offset_type offset, offset_type length, std::string prefix)
 
virtual int get_allocator_id () const =0
 Returns the file's allocator. More...
 
virtual int get_physical_device_id () const
 
virtual int get_queue_id () const =0
 Returns the identifier of the file's queue. More...
 
int get_request_nref ()
 
virtual const char * io_type () const
 Identifies the type of I/O implementation. More...
 
virtual void lock ()=0
 Locks file for reading and writing (acquires a lock in the file system). More...
 
virtual void serve (const request *req)=0 throw (io_error)
 
virtual void set_size (offset_type newsize)=0
 Changes the size of the file. More...
 
virtual offset_type size ()=0
 Returns size of the file. More...
 

Static Public Member Functions

Static Functions for Platform Abstraction
static int unlink (const char *path)
 unlink path from filesystem More...
 
static int truncate (const char *path, external_size_type length)
 truncate a path to given length. Use this only if you dont have a fileio-specific object, which provides truncate(). More...
 

Static Public Attributes

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

Protected Member Functions

 file ()
 Initializes file object. More...
 

Private Attributes

int request_ref_cnt
 
mutex request_ref_cnt_mutex
 

Additional Inherited Members

- Private Member Functions inherited from stxxl::noncopyable
 noncopyable ()
 

Member Typedef Documentation

typedef request::offset_type stxxl::file::offset_type

the offset of a request, also the size of the file

Definition at line 64 of file file.h.

the size of a request

Definition at line 66 of file file.h.

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. < Tries to open with appropriate flags, if fails print warning and open normally.

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

REQUIRE_DIRECT 

implies DIRECT, fail if opening with DIRECT flag does not work.

Definition at line 72 of file file.h.

Constructor & Destructor Documentation

stxxl::file::file ( )
inlineprotected

Initializes file object.

Remarks
Called in implementations of file

Definition at line 60 of file file.h.

virtual stxxl::file::~file ( )
inlinevirtual

Definition at line 172 of file file.h.

References STXXL_ERRMSG.

Member Function Documentation

void stxxl::file::add_request_ref ( )
inline

Definition at line 110 of file file.h.

Referenced by stxxl::request::request().

virtual request_ptr stxxl::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
bufferpointer to memory buffer to read into
posfile position to start read from
bytesnumber of bytes to transfer
on_cmplI/O completion handler
Returns
request_ptr request object, which can be used to track the status of the operation

Referenced by stxxl::typed_block< RawSize, Type, NRef, MetaInfoType >::read().

virtual request_ptr stxxl::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
bufferpointer to memory buffer to write from
posstarting file position to write
bytesnumber of bytes to transfer
on_cmplI/O completion handler
Returns
request_ptr request object, which can be used to track the status of the operation

Referenced by stxxl::typed_block< RawSize, Type, NRef, MetaInfoType >::write().

virtual void stxxl::file::close_remove ( )
inlinevirtual

close and remove file

Reimplemented in stxxl::wfs_file_base, and stxxl::ufs_file_base.

Definition at line 170 of file file.h.

void stxxl::file::delete_request_ref ( )
inline

Definition at line 116 of file file.h.

Referenced by stxxl::request::completed().

virtual void stxxl::file::discard ( offset_type  offset,
offset_type  size 
)
inlinevirtual

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

Definition at line 156 of file file.h.

References stxxl::STXXL_UNUSED().

virtual void stxxl::file::export_files ( offset_type  offset,
offset_type  length,
std::string  prefix 
)
inlinevirtual

Definition at line 162 of file file.h.

References stxxl::STXXL_UNUSED().

virtual int stxxl::file::get_allocator_id ( ) const
pure virtual

Returns the file's allocator.

Returns
allocator number

Implemented in stxxl::disk_queued_file.

Referenced by stxxl::serving_request::serve().

virtual int stxxl::file::get_physical_device_id ( ) const
inlinevirtual

Definition at line 146 of file file.h.

virtual int stxxl::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 stxxl::disk_queued_file.

int stxxl::file::get_request_nref ( )
inline

Definition at line 123 of file file.h.

virtual const char* stxxl::file::io_type ( ) const
inlinevirtual

Identifies the type of I/O implementation.

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

Reimplemented in stxxl::sim_disk_file, stxxl::wbtl_file, stxxl::fileperblock_file< base_file_type >, stxxl::wincall_file, stxxl::wfs_file_base, stxxl::ufs_file_base, stxxl::mem_file, stxxl::mmap_file, and stxxl::syscall_file.

Definition at line 181 of file file.h.

Referenced by stxxl::serving_request::io_type().

virtual void stxxl::file::lock ( )
pure virtual

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

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

virtual void stxxl::file::set_size ( offset_type  newsize)
pure virtual

Changes the size of the file.

Parameters
newsizenew file size

Referenced by stxxl::vector< ValueType >::vector().

virtual offset_type stxxl::file::size ( )
pure virtual

Returns size of the file.

Returns
file size in bytes

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

static int stxxl::file::truncate ( const char *  path,
external_size_type  length 
)
static

truncate a path to given length. Use this only if you dont have a fileio-specific object, which provides truncate().

int stxxl::file::unlink ( const char *  path)
static

unlink path from filesystem

Definition at line 18 of file file.cpp.

Member Data Documentation

const int stxxl::file::DEFAULT_QUEUE = -1
static

Definition at line 86 of file file.h.

Referenced by stxxl::disk_config::fileio_string(), and stxxl::disk_config::parse_line().

const int stxxl::file::NO_ALLOCATOR = -1
static

Definition at line 88 of file file.h.

const int stxxl::file::NO_QUEUE = -2
static

Definition at line 87 of file file.h.

int stxxl::file::request_ref_cnt
private

Definition at line 55 of file file.h.

mutex stxxl::file::request_ref_cnt_mutex
private

Definition at line 54 of file file.h.


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