psi::PSIO Class Reference

#include <psio.hpp>

List of all members.

Public Member Functions

int state ()
 return 1 if activated
void filecfg_kwd (const char *kwdgrp, const char *kwd, int unit, const char *kwdval)
const std::string & filecfg_kwd (const char *kwdgrp, const char *kwd, int unit)
 returns the keyword value. If not defined, returns empty string.
void open (unsigned int unit, int status)
 open unit. status can be PSIO_OPEN_OLD (if existing file is to be opened) or PSIO_OPEN_NEW if new file should be open
void close (unsigned int unit, int keep)
 close unit. if keep == 0, will remove the file, else keep it
void rehash (unsigned int unit)
 sync up the object to the file on disk by closing and opening the file, if necessary
int open_check (unsigned int unit)
 return 1 if unit is open
void read (unsigned int unit, const char *key, char *buffer, ULI size, psio_address start, psio_address *end)
void write (unsigned int unit, const char *key, char *buffer, ULI size, psio_address start, psio_address *end)
void read_entry (unsigned int unit, const char *key, char *buffer, ULI size)
void write_entry (unsigned int unit, const char *key, char *buffer, ULI size)
void rw (unsigned int unit, char *buffer, psio_address address, ULI size, int wrt)
void tocclean (unsigned int unit, const char *key)
 Delete all TOC entries after the given key. If a blank key is given, the entire TOC will be wiped.
void tocprint (unsigned int unit, FILE *output)
 Print the table of contents for the given unit.
psio_tocentry * tocscan (unsigned int unit, const char *key)
 Scans the TOC for a particular keyword and returns either a pointer to the entry or NULL to the caller.
void tocwrite (unsigned int unit)
 Write the table of contents for file number 'unit'. NB: This function should NOT call psio_error because the latter calls it!

Static Public Attributes

static int _error_exit_code_ = 1
 Upon catastrophic failure, the library will exit() with this code. The default is 1, but can be overridden.


Detailed Description

PSIO is an instance of libpsio library. Multiple instances of PSIO are supported.

Each instance can be configured using filecfg_kwd(). The following example best demonstrates how to configure a PSIO instance Lib: Lib->filecfg_kwd("DEFAULT","NAME",-1,"newwfn") // all modules will set filename prefix to newwfn for all units Lib->filecfg_kwd("DEFAULT","NVOLUME",34,"2") // all modules will stripe unit 34 over 2 volumes Lib->filecfg_kwd("CINTS","VOLUME1",-1,"/scratch1/") // module CINTS will access volume 1 of all units under /scratch etc.


Member Function Documentation

void psi::PSIO::filecfg_kwd ( const char *  kwdgrp,
const char *  kwd,
int  unit,
const char *  kwdval 
)

set keyword kwd describing some aspect of configuration of PSIO file unit to value kwdval. kwdgrp specifies the keyword group (useful values are: "DEFAULT", "PSI", and the name of the current executable). If unit is set to -1, this keyword will set the default for all units (this keyword can be further overridden for some units). To specify a keyword that works for a specific unit, set unit to the appropriate number between 0 to PSIO_MAXUNIT.

PSIO understands the following keywords: "name" (specifies the prefix for the filename, i.e. if name is set to "psi" then unit 35 will be named "psi.35"), "nvolume" (number of files over which to stripe this unit, cannot be greater than PSIO_MAXVOL), "volumeX", where X is a positive integer less than or equal to the value of "nvolume".

void psi::PSIO::read ( unsigned int  unit,
const char *  key,
char *  buffer,
ULI  size,
psio_address  start,
psio_address *  end 
)

Reads data from within a TOC entry from a PSI file.

Parameters:
unit = The PSI unit number used to identify the file to all read and write functions.
key = The TOC keyword identifying the desired entry.
buffer = The buffer to store the data as it is read.
size = The number of bytes to read.
start = The entry-relative starting page/offset of the desired data.
end = A pointer to the entry-relative page/offset for the next byte after the end of the read request.

void psi::PSIO::write ( unsigned int  unit,
const char *  key,
char *  buffer,
ULI  size,
psio_address  start,
psio_address *  end 
)

Writes data to a TOC entry in a PSI file.

Parameters:
unit = The PSI unit number used to identify the file to all read and write functions.
key = The TOC keyword identifying the desired entry.
buffer = The buffer from which the data is written.
size = The number of bytes to write.
start = The entry-relative starting page/offset to write the data.
end = A pointer to the entry-relative page/offset for the next byte after the end of the write request.


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

Generated on Mon Dec 21 14:14:48 2009 for PSI by  doxygen 1.5.6