fio_PermDBinfoMgr Class Reference
[Classes for large file i/o, relative file, and DataBase]

#include <fio_PermDBinfoMgr.h>

Inheritance diagram for fio_PermDBinfoMgr:

Inheritance graph
[legend]
Collaboration diagram for fio_PermDBinfoMgr:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition at line 185 of file fio_PermDBinfoMgr.h.


Public Member Functions

 fio_PermDBinfoMgr (bool a_readOnly, fio_DataBaseID_t a_dbID, cmn_Path a_path, string a_name)
 ~fio_PermDBinfoMgr ()
struct fio_permDBinfo_tGetPermDBinfo ()
ivd_Time32_t GetJourDate ()
fio_DataBaseID_t GetDataBaseID ()
ivd_FileID_t GetLastJourFileID ()
ivd_TransNumber_t GetLastTransNumber ()
ivd_FilePosition_t GetPostTransPosition ()
ivd_FileID_t GetArhivedSyncJourFileID ()
ivd_FileID_t GetLastSyncJourFileID ()
ivd_FilePosition_t GetLastSyncPosition ()
void SetJourDate (ivd_Time32_t a_date)
void SetLastTransaction (ivd_TransNumber_t a_transNumber, ivd_FileID_t a_jourFileID, ivd_FilePosition_t a_postTransPosition)
void SetLastSyncPosition (ivd_FileID_t a_jourFileID, ivd_FilePosition_t a_currentJourPosition, bool a_forced)
void WriteInfo ()
 After DB is Synchroniyed than PDBI is update permanently.

Public Attributes

 log_CLASSID_m
 Macro for class name member.

Private Member Functions

void ReadInfo ()

Private Attributes

struct fio_permDBinfo_t m_permDBinfo
 permanent DB information
cmn_Mutex m_write_x
 atomic write to file

Constructor & Destructor Documentation

fio_PermDBinfoMgr::fio_PermDBinfoMgr ( bool  a_readOnly,
fio_DataBaseID_t  a_dbID,
cmn_Path  a_path,
string  a_name 
)

Definition at line 114 of file fio_permDBinfoMgr.cpp.

References fio_permDBinfo_t::CheckValidation(), dbg_NORM, cmn_Time::GetTime_t(), fio_permDBinfo_t::Init(), log_DBG_m, log_FUNC_m, m_permDBinfo, ReadInfo(), cmn_File::SeekEndF(), and WriteInfo().

00118                                      :
00119                                      fio_File(a_readOnly, 0, a_path, a_name) {
00120     log_FUNC_m(fio_PermDBinfoMgr);
00121 
00122     ivd_FilePosition_t fileSize = SeekEndF();
00123     if (fileSize == 0) { // new or empty file
00124         cmn_Time time;
00125         m_permDBinfo.Init(a_dbID, time.GetTime_t());
00126         WriteInfo();
00127     }
00128     else {
00129         ReadInfo();
00130         m_permDBinfo.CheckValidation(a_dbID);
00131     }
00132     log_DBG_m(dbg_NORM,  m_permDBinfo);    
00133 }
//============================================================================//

Here is the call graph for this function:

fio_PermDBinfoMgr::~fio_PermDBinfoMgr (  )  [inline]

Definition at line 192 of file fio_PermDBinfoMgr.h.

00192 {};


Member Function Documentation

struct fio_permDBinfo_t* fio_PermDBinfoMgr::GetPermDBinfo (  )  [inline, read]

Definition at line 206 of file fio_PermDBinfoMgr.h.

References m_permDBinfo.

Referenced by fio_JourMgr::AddNewJourFile(), and fio_JourMgr::fio_JourMgr().

00206 { return &m_permDBinfo;};

Here is the caller graph for this function:

ivd_Time32_t fio_PermDBinfoMgr::GetJourDate (  )  [inline]

Definition at line 208 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::JourDate, and m_permDBinfo.

00208 { return m_permDBinfo.JourDate;};

fio_DataBaseID_t fio_PermDBinfoMgr::GetDataBaseID (  )  [inline]

Definition at line 209 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::DataBaseID, and m_permDBinfo.

00209 { return m_permDBinfo.DataBaseID;};

ivd_FileID_t fio_PermDBinfoMgr::GetLastJourFileID (  )  [inline]

Definition at line 210 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::LastJourFileID, and m_permDBinfo.

Referenced by fio_JourMgr::fio_JourMgr().

00210 { return m_permDBinfo.LastJourFileID;};

Here is the caller graph for this function:

ivd_TransNumber_t fio_PermDBinfoMgr::GetLastTransNumber (  )  [inline]

Definition at line 211 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::LastTransNumber, and m_permDBinfo.

Referenced by fio_JourMgr::Replay().

00211 { return m_permDBinfo.LastTransNumber;};

Here is the caller graph for this function:

ivd_FilePosition_t fio_PermDBinfoMgr::GetPostTransPosition (  )  [inline]

Definition at line 212 of file fio_PermDBinfoMgr.h.

References m_permDBinfo, and fio_permDBinfo_t::PostTransPosition.

00212 { return m_permDBinfo.PostTransPosition;};

ivd_FileID_t fio_PermDBinfoMgr::GetArhivedSyncJourFileID (  )  [inline]

Definition at line 214 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::ArchivedSyncJourFileID, and m_permDBinfo.

Referenced by fio_JourMgr::RemoveArhivedJourFile().

Here is the caller graph for this function:

ivd_FileID_t fio_PermDBinfoMgr::GetLastSyncJourFileID (  )  [inline]

Definition at line 216 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::LastSyncJourFileID, and m_permDBinfo.

Referenced by fio_JourMgr::fio_JourMgr().

00216 { return m_permDBinfo.LastSyncJourFileID;};

Here is the caller graph for this function:

ivd_FilePosition_t fio_PermDBinfoMgr::GetLastSyncPosition (  )  [inline]

Definition at line 217 of file fio_PermDBinfoMgr.h.

References fio_permDBinfo_t::LastSyncPosition, and m_permDBinfo.

Referenced by fio_JourMgr::fio_JourMgr().

00217 { return m_permDBinfo.LastSyncPosition;};

Here is the caller graph for this function:

void fio_PermDBinfoMgr::SetJourDate ( ivd_Time32_t  a_date  ) 

Definition at line 147 of file fio_permDBinfoMgr.cpp.

References fio_permDBinfo_t::JourDate, cmn_Mutex::Lock(), log_FUNC_m, m_permDBinfo, m_write_x, cmn_Mutex::Unlock(), and WriteInfo().

00147                                                        {
00148     log_FUNC_m(SetJourDate);
00149     m_write_x.Lock();
00150     m_permDBinfo.JourDate = a_date;
00151     WriteInfo();
00152     m_write_x.Unlock();
00153 }

Here is the call graph for this function:

void fio_PermDBinfoMgr::SetLastTransaction ( ivd_TransNumber_t  a_transNumber,
ivd_FileID_t  a_jourFileID,
ivd_FilePosition_t  a_postTransPosition 
)

Definition at line 157 of file fio_permDBinfoMgr.cpp.

References dbg_DETAIL, fio_permDBinfo_t::LastJourFileID, fio_permDBinfo_t::LastTransNumber, cmn_Mutex::Lock(), log_DBG_m, log_FUNC_m, m_permDBinfo, m_write_x, fio_permDBinfo_t::PostTransPosition, cmn_Mutex::Unlock(), and WriteInfo().

Referenced by fio_JourMgr::ReleaseWaiters().

00161 {
00162     log_FUNC_m(SetLastTransaction);
00163     m_write_x.Lock();
00164 
00165     log_DBG_m(dbg_DETAIL, "Commit up to trans num " << a_transNumber <<
00166                           " JourFileID " << a_jourFileID <<
00167                           " JourPosition = " << a_postTransPosition );
00168     m_permDBinfo.LastTransNumber   = a_transNumber; 
00169     m_permDBinfo.LastJourFileID    = a_jourFileID;
00170     m_permDBinfo.PostTransPosition = a_postTransPosition;
00171 
00172     WriteInfo();
00173     m_write_x.Unlock();
00174 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fio_PermDBinfoMgr::SetLastSyncPosition ( ivd_FileID_t  a_jourFileID,
ivd_FilePosition_t  a_currentJourPosition,
bool  a_forced 
)

Definition at line 178 of file fio_permDBinfoMgr.cpp.

References fio_permDBinfo_t::ArchivedSyncJourFileID, fio_permDBinfo_t::ArchivedSyncPosition, dbg_NORM, fio_permDBinfo_t::LastSyncJourFileID, fio_permDBinfo_t::LastSyncPosition, cmn_Mutex::Lock(), log_DBG_m, log_FUNC_m, m_permDBinfo, m_write_x, cmn_Mutex::Unlock(), and WriteInfo().

Referenced by fio_JourMgr::SetLastSyncPosition().

00182 {
00183     log_FUNC_m(SetLastSyncPosition);
00184     m_write_x.Lock();
00185     m_permDBinfo.LastSyncJourFileID = a_jourFileID;
00186     m_permDBinfo.LastSyncPosition   = a_currentJourPosition;
00187     if (a_forced) {
00188         m_permDBinfo.ArchivedSyncJourFileID = a_jourFileID;
00189         m_permDBinfo.ArchivedSyncPosition   = a_currentJourPosition;
00190     }
00191     WriteInfo();
00192     log_DBG_m(dbg_NORM, "Set last Sync position." 
00193                      << " a_forced: " << boolalpha << a_forced);
00194                      
00195     log_DBG_m(dbg_NORM,  m_permDBinfo);    
00196     m_write_x.Unlock();
00197 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fio_PermDBinfoMgr::WriteInfo (  ) 

After DB is Synchroniyed than PDBI is update permanently.

Definition at line 202 of file fio_permDBinfoMgr.cpp.

References log_FUNC_m, m_permDBinfo, cmn_File::SeekF(), and cmn_File::WriteF().

Referenced by fio_PermDBinfoMgr(), SetJourDate(), SetLastSyncPosition(), and SetLastTransaction().

00202                                  {
00203     log_FUNC_m(WriteInfo);
00204     SeekF(0);
00205     WriteF(&m_permDBinfo, sizeof(fio_permDBinfo_t));
00206 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fio_PermDBinfoMgr::ReadInfo (  )  [private]

Definition at line 210 of file fio_permDBinfoMgr.cpp.

References log_FUNC_m, m_permDBinfo, cmn_File::ReadF(), and cmn_File::SeekF().

Referenced by fio_PermDBinfoMgr().

00210                                  {
00211     log_FUNC_m(ReadInfo);
00212     SeekF(0);
00213     ReadF(&m_permDBinfo, sizeof(fio_permDBinfo_t));
00214 }

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

atomic write to file

Definition at line 199 of file fio_PermDBinfoMgr.h.

Referenced by SetJourDate(), SetLastSyncPosition(), and SetLastTransaction().

Macro for class name member.

Reimplemented from fio_File.

Definition at line 203 of file fio_PermDBinfoMgr.h.


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

Generated on Mon Feb 27 19:16:45 2012 for OPENARCHIVE by  doxygen 1.5.6