ARC SDK
Data Structures | Public Member Functions | Static Public Member Functions
Arc::FileAccess Class Reference

Defines interface for accessing filesystems. More...

#include <arc/FileAccess.h>

Data Structures

struct  header_t
 Internal struct used for communication between processes. More...
 

Public Member Functions

 FileAccess (void)
 New FileAccess object.
 
 ~FileAccess (void)
 Shuts down any spawned executable.
 
bool ping (void)
 Check if communication with proxy works.
 
bool fa_setuid (int uid, int gid)
 Modify user uid and gid. More...
 
bool fa_mkdir (const std::string &path, mode_t mode)
 Make a directory and assign it specified mode.
 
bool fa_mkdirp (const std::string &path, mode_t mode)
 Make a directory and assign it specified mode. More...
 
bool fa_link (const std::string &oldpath, const std::string &newpath)
 Create hard link.
 
bool fa_softlink (const std::string &oldpath, const std::string &newpath)
 Create symbolic (aka soft) link.
 
bool fa_copy (const std::string &oldpath, const std::string &newpath, mode_t mode)
 Copy file to new location. More...
 
bool fa_rename (const std::string &oldpath, const std::string &newpath)
 Rename file.
 
bool fa_chmod (const std::string &path, mode_t mode)
 Change mode of filesystem object.
 
bool fa_stat (const std::string &path, struct stat &st)
 stat file.
 
bool fa_lstat (const std::string &path, struct stat &st)
 stat symbolic link or file.
 
bool fa_fstat (struct stat &st)
 stat open file.
 
bool fa_ftruncate (off_t length)
 Truncate open file.
 
off_t fa_fallocate (off_t length)
 Allocate disk space for open file.
 
bool fa_readlink (const std::string &path, std::string &linkpath)
 Read content of symbolic link.
 
bool fa_remove (const std::string &path)
 Remove file system object.
 
bool fa_unlink (const std::string &path)
 Remove file.
 
bool fa_rmdir (const std::string &path)
 Remove directory (if empty).
 
bool fa_rmdirr (const std::string &path)
 Remove directory recursively.
 
bool fa_opendir (const std::string &path)
 Open directory. Only one directory may be open at a time.
 
bool fa_closedir (void)
 Close open directory.
 
bool fa_readdir (std::string &name)
 Read relative name of object in open directory.
 
bool fa_open (const std::string &path, int flags, mode_t mode)
 Open file. Only one file may be open at a time.
 
bool fa_close (void)
 Close open file.
 
bool fa_mkstemp (std::string &path, mode_t mode)
 Open new temporary file for writing. More...
 
off_t fa_lseek (off_t offset, int whence)
 Change current position in open file.
 
ssize_t fa_read (void *buf, size_t size)
 Read from open file.
 
ssize_t fa_write (const void *buf, size_t size)
 Write to open file.
 
ssize_t fa_pread (void *buf, size_t size, off_t offset)
 Read from open file at specified offset.
 
ssize_t fa_pwrite (const void *buf, size_t size, off_t offset)
 Write to open file at specified offset.
 
int geterrno ()
 Get errno of last operation. Every operation resets errno.
 
 operator bool (void)
 Returns true if this instance is in useful condition.
 
bool operator! (void)
 Returns true if this instance is not in useful condition.
 

Static Public Member Functions

static FileAccessAcquire (void)
 Constructor which takes already existing object from global cache.
 
static void Release (FileAccess *fa)
 Destructor which returns object into global cache.
 
static void testtune (void)
 Special method for using in unit tests.
 

Detailed Description

Defines interface for accessing filesystems.

This class accesses the local filesystem through a proxy executable which allows switching user id in multithreaded systems without introducing conflict with other threads. Its methods are mostly replicas of corresponding POSIX functions with some convenience tweaking.

Member Function Documentation

bool Arc::FileAccess::fa_copy ( const std::string &  oldpath,
const std::string &  newpath,
mode_t  mode 
)

Copy file to new location.

If new file is created it is assigned specified mode.

bool Arc::FileAccess::fa_mkdirp ( const std::string &  path,
mode_t  mode 
)

Make a directory and assign it specified mode.

If missing all intermediate directories are created too.

bool Arc::FileAccess::fa_mkstemp ( std::string &  path,
mode_t  mode 
)

Open new temporary file for writing.

On input path contains template of file name ending with XXXXXX. On output path is path to created file.

bool Arc::FileAccess::fa_setuid ( int  uid,
int  gid 
)

Modify user uid and gid.

If any is set to 0 then executable is switched to original uid/gid.


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