#include <fio_File.h>


It supports 64 bit seek, but it does not support reading or writing blocks larger than 2GiB!
Definition at line 29 of file fio_File.h.
Public Member Functions | |
| fio_File (bool a_readOnly, const ivd_FileID_t a_fileID, const cmn_Path a_path, const string a_fileName) | |
| Instantiate fio_File class with unique file ID and file name. | |
| virtual | ~fio_File () |
| string & | GetFileName () const |
| ivd_FileID_t | GetFileID () const |
| ivd_FileRetSize_t | PosWrite (ivd_FilePosition_t a_position, const void *a_buffer_p, ivd_FileBufSize_t a_size) const |
| over write method to add a mutex | |
| ivd_FileRetSize_t | PosRead (ivd_FilePosition_t a_position, void *a_buffer_p, ivd_FileBufSize_t a_size) |
| over write method to add a mutex | |
| const cmn_Path & | GetPath () |
Public Attributes | |
| log_CLASSID_m | |
| Macro for class name member. | |
Private Attributes | |
| const ivd_FileID_t | m_fileID |
| File ID is used by inheritor classes, specially for transaction handle. | |
| const cmn_Path | m_path |
| const string | m_fileName |
| cmn_Mutex | m_file_x |
| atomic access to file psition and read or write | |
| fio_File::fio_File | ( | bool | a_readOnly, | |
| const ivd_FileID_t | a_fileID, | |||
| const cmn_Path | a_path, | |||
| const string | a_fileName | |||
| ) |
Instantiate fio_File class with unique file ID and file name.
If you don't specify path the current working directory is used.
Definition at line 47 of file fio_File.cpp.
References fom_FILE_NO_SHARE_WRITE, fom_OPEN_ALWAYS, fom_READ, fom_READWRITE, and cmn_File::OpenF().
00051 : cmn_File(a_path + a_fileName), 00052 m_fileID(a_fileID), 00053 m_path(a_path), 00054 m_fileName(a_fileName) 00055 // m_pathAndFile(m_path + m_fileName) 00056 { 00057 UInt32_t mode = 0; 00058 if (a_readOnly) { 00059 mode = fom_READ; 00060 } 00061 else { 00062 mode = fom_READWRITE | fom_OPEN_ALWAYS | fom_FILE_NO_SHARE_WRITE; 00063 } 00064 OpenF(mode); 00065 }

| fio_File::~fio_File | ( | ) | [virtual] |
| string& fio_File::GetFileName | ( | ) | const [inline] |
Definition at line 78 of file fio_File.h.
Referenced by fio_RelFileTrans::AddVectorToBuffer(), hsm_ReleaseCandRec::Append(), hsm_ActiveFH::Append(), fio_CirFileTrans::CheckBlockChain(), fio_JourFile::Dump(), fio_CirFileTrans::fio_CirFileTrans(), fio_JourMgr::fio_JourMgr(), fio_RelFile::fio_RelFile(), fio_uvListMgr::GetBunchOfVectorIDXes(), fio_CirFileTrans::GetRFIdxFromNextBlock(), fio_CirFileTrans::GetRNIdxFromNextBlock(), fio_uvListMgr::GetVectorIDX(), fio_PermJourInfo_t::Init(), fio_uvListMgr::IsElemInBuffer(), hsm_ReleaseCandRec::IsValid(), fio_CirFileTrans::NewWriteBackBlock(), operator<<(), fio_RelFileTrans::PosWrite(), fio_RelFileTrans::PutVectorToBufferAndFlush(), fio_CirFileTrans::ReadFront(), fio_RelFile::ReadListOfUnusedVector(), fio_CirFileTrans::ReadNext(), hsm_ReleaseCandRec::Release(), hsm_ActiveFH::Release(), fio_uvListMgr::RemoveVectorFromBuff(), fio_JourMgr::Replay(), fio_CirFileTrans::SetRecIndeces(), hsm_ActiveFH::Update(), fio_RelFile::WriteHeader(), and fio_RelFile::WriteListOfUnusedVector().
00078 { return const_cast<string&>(m_fileName);};

| ivd_FileID_t fio_File::GetFileID | ( | void | ) | const [inline] |
Definition at line 79 of file fio_File.h.
Referenced by fio_uvListMgr::AddVectorToBuff(), fio_uvListMgr::GetBunchOfVectorIDXes(), fio_JourHandle::GetFileID(), fio_RelFileTrans::GetVectorIDX(), fio_RelFileTransLstMgr::Insert(), fio_RelFileTrans::PosWrite(), fio_uvListMgr::ReadUV(), fio_RelFileTrans::ReleaseVectorIdx(), fio_JourMgr::SetLastSyncPosition(), and fio_uvListMgr::WriteUV().
00079 { return m_fileID;};

| ivd_FileRetSize_t fio_File::PosWrite | ( | ivd_FilePosition_t | a_position, | |
| const void * | a_buffer_p, | |||
| ivd_FileBufSize_t | a_size | |||
| ) | const |
over write method to add a mutex
Definition at line 103 of file fio_File.cpp.
References ivd_BaseException::GetFriendly(), ie_FATAL_ERROR, m_file_x, m_fileName, m_path, cmn_File::SeekF(), and cmn_File::WriteF().
Referenced by fio_CirFileTrans::fio_CirFileTrans(), fio_JourHandle::JourFlush(), fio_JourHandle::JourWrite(), fio_RelFile::PosWrite(), fio_RelFile::WriteHeader(), fio_PermJourInfo_t::WriteInfo(), and fio_RelFile::WriteListOfUnusedVector().
00105 { 00106 00107 cmn_MutexLock l(m_file_x); 00108 00109 ivd_FileBufSize_t ret; 00110 try { 00111 SeekF(a_position); 00112 ret = WriteF(a_buffer_p, a_size); 00113 if (ret < a_size) { 00114 ostringstream sstr; 00115 sstr << "Write to " << (m_path + m_fileName) << ", size " << a_size << 00116 ", but write only " << ret; 00117 throw ivd_SysError(ENOSPC, sstr.str(), true); 00118 } 00119 } 00120 catch (ivd_SysError &se) { 00121 throw ivd_InternalError(ie_FATAL_ERROR, se.GetFriendly(), true); 00122 } 00123 return ret; 00124 }


| ivd_FileRetSize_t fio_File::PosRead | ( | ivd_FilePosition_t | a_position, | |
| void * | a_buffer_p, | |||
| ivd_FileBufSize_t | a_size | |||
| ) |
over write method to add a mutex
Definition at line 128 of file fio_File.cpp.
References m_file_x, cmn_File::ReadF(), and cmn_File::SeekF().
Referenced by fio_CirFileTrans::CheckBlockChain(), fio_CirFileTrans::fio_CirFileTrans(), fio_CirFileTrans::GetRFIdxFromNextBlock(), fio_CirFileTrans::GetRNIdxFromNextBlock(), fio_PermJourInfo_t::Init(), fio_JourHandle::JourRead(), fio_RelFile::ReadListOfUnusedVector(), fio_RelFile::ReadRec(), fsc_nsStream::RemoveLeftVectors(), fsc_RawUpdate::ScanAllCopy(), fsc_RawScan::ScanAllCopy(), fsc_RawUpdate::ScanAllGeneration(), fsc_RawScan::ScanAllGeneration(), fsc_RawUpdate::ScanAllSplit(), fsc_RawScan::ScanAllSplit(), fio_CirFileTrans::SyncRelFileObj(), and fsc_nsStream::Write2DB().
00130 { 00131 // log_FUNC_m(PosRead); 00132 cmn_MutexLock l(m_file_x); 00133 SeekF(a_position); 00134 UInt32_t read = ReadF(a_buffer_p, a_size); 00135 // when read over file size fill buffer with zeroes 00136 if (read < a_size) { 00137 //log_DBG_m(dbg_DETAIL, "Read data over file " << m_fileID 00138 // << ", position " << a_position << endl << 00139 // cmn_HexDump(a_buffer_p, a_size, a_size, false) ); 00140 memset((char*)a_buffer_p + read, 0, a_size - read); 00141 return a_size; 00142 } 00143 return read; 00144 }


| const cmn_Path& fio_File::GetPath | ( | ) | [inline] |
const ivd_FileID_t fio_File::m_fileID [private] |
File ID is used by inheritor classes, specially for transaction handle.
It must be unique in the scope of DataBase. If you use class just for a file, it doesn't matter what value m_fileID has.
Definition at line 62 of file fio_File.h.
const cmn_Path fio_File::m_path [private] |
const string fio_File::m_fileName [private] |
cmn_Mutex fio_File::m_file_x [mutable, private] |
atomic access to file psition and read or write
Definition at line 68 of file fio_File.h.
Referenced by PosRead(), and PosWrite().
Macro for class name member.
Reimplemented from cmn_File.
Reimplemented in fio_CirFileTrans, fio_JourFile, fio_PermDBinfoMgr, fio_RelFile, fio_RelFileTrans, and fio_VarLenRFT.
Definition at line 72 of file fio_File.h.
1.5.6