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

#include <fio_Vector.h>

Inheritance diagram for fio_Vector:

Inheritance graph
[legend]
Collaboration diagram for fio_Vector:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition at line 61 of file fio_Vector.h.


Public Member Functions

 fio_Vector (const fio_Vector &v)
 fio_Vector (fio_RelFileTrans &a_relFileTrans, ivd_VectorSize_t a_vectorSize=0, ivd_RecordIDX_t a_vectorIndex=0, bool a_changed=true)
virtual ~fio_Vector ()
fio_RelFileTransGetRelFileTrans ()
void SetVector (const fio_VecQualifers &a_vq)
void operator= (const fio_Vector &v)
bool Write2DB (const void *a_buffer_p, ivd_VectorSize_t a_vectorSize, ivd_RecordIDX_t &a_vectorIndex, fio_Transaction &a_trans)
bool Write2DB (const void *a_buffer_p, fio_Transaction &a_trans)
 Just write sime sized new data on same place.
void ReadFromDB (void *a_buffer_p)
ivd_VectorSize_t GetVectorSize ()
ivd_RecordIDX_t GetVectorIndex ()
void Dump (ostream &os)

Public Attributes

 log_CLASSID_m

Protected Attributes

fio_RelFileTransm_relFileTrans
ivd_VectorSize_t m_vectorSize
ivd_RecordIDX_t m_vectorIndex
bool m_changed

Friends

class ut_fio_Vector

Constructor & Destructor Documentation

fio_Vector::fio_Vector ( const fio_Vector v  )  [explicit]

Definition at line 45 of file fio_Vector.cpp.

References log_FUNC_A_m, m_changed, m_vectorIndex, and m_vectorSize.

Referenced by fio_Vector().

00045                                            :
00046         m_relFileTrans(v.m_relFileTrans),
00047         m_vectorSize(v.m_vectorSize),
00048         m_vectorIndex(v.m_vectorIndex),
00049         m_changed(true)
00050 {
00051     log_FUNC_A_m(fio_Vector(fio_Vector), "m_vectorSize=" << m_vectorSize 
00052                                << ", m_vectorIndex=" << m_vectorIndex
00053                                << ", m_changed=" << boolalpha << m_changed);
00054     // Empty
00055 }
//============================================================================//

Here is the caller graph for this function:

fio_Vector::fio_Vector ( fio_RelFileTrans a_relFileTrans,
ivd_VectorSize_t  a_vectorSize = 0,
ivd_RecordIDX_t  a_vectorIndex = 0,
bool  a_changed = true 
) [explicit]

Definition at line 58 of file fio_Vector.cpp.

References fio_Vector(), and log_FUNC_A_m.

00063             :
00064             m_relFileTrans(a_relFileTrans),
00065             m_vectorSize(a_vectorSize),
00066             m_vectorIndex(a_vectorIndex),
00067             m_changed(a_changed)
00068 {
00069     log_FUNC_A_m(fio_Vector(,,,), "a_vectorSize=" << a_vectorSize 
00070                                << ", a_vectorIndex=" << a_vectorIndex
00071                                << ", a_changed=" << boolalpha << a_changed);
00072     // Empty
00073 }
//============================================================================//

Here is the call graph for this function:

fio_Vector::~fio_Vector (  )  [virtual]

Definition at line 77 of file fio_Vector.cpp.

References log_FUNC_m.

00078 {
00079     log_FUNC_m(~fio_Vector);
00080     // Empty
00081 }


Member Function Documentation

fio_RelFileTrans& fio_Vector::GetRelFileTrans (  )  [inline]

Definition at line 76 of file fio_Vector.h.

00076 { return m_relFileTrans;};

void fio_Vector::SetVector ( const fio_VecQualifers a_vq  )  [inline]

Definition at line 89 of file fio_Vector.h.

References fio_VecQualifers::idx, and fio_VecQualifers::size.

Referenced by fsc_nsStream::ReadFromDB(), and fsc_nsStream::Write2DB().

00089                                                  {
00090         m_vectorSize  = a_vq.size;
00091         m_vectorIndex = a_vq.idx;
00092     };

Here is the caller graph for this function:

void fio_Vector::operator= ( const fio_Vector v  )  [inline]

Definition at line 94 of file fio_Vector.h.

References m_vectorIndex, and m_vectorSize.

Referenced by fio_BasicString::operator=().

00094                                           {
00095         m_changed = true;
00096         m_vectorSize  = v.m_vectorSize;
00097         m_vectorIndex = v.m_vectorIndex;
00098     };

Here is the caller graph for this function:

bool fio_Vector::Write2DB ( const void *  a_buffer_p,
ivd_VectorSize_t  a_vectorSize,
ivd_RecordIDX_t a_vectorIndex,
fio_Transaction a_trans 
)

Definition at line 85 of file fio_Vector.cpp.

References assert, fio_RelFileTrans::GetVectorIDX(), m_changed, m_relFileTrans, m_vectorIndex, m_vectorSize, NULL, fio_RelFileTrans::ReleaseVectorIdx(), and fio_RelFile::WriteRec().

Referenced by hsm_FileHeader::StoreDirTreeRec(), hsm_FileHeader::StoreNameOwnRec(), hsm_FileHeader::StoreOldNameOwnRec(), fsc_nsStream::Write2DB(), fsc_nsElement::Write2DB(), fsc_nsDirEntryFormattedVec::Write2DB(), fsc_GenerationMgr::Write2DB(), and fio_BasicString::Write2DB().

00088                                                             {
00089 
00090     ivd_RecordIDX_t idx = m_vectorIndex;  //  still valid vector index
00091 
00092     if (a_vectorSize == 0) { // nothing to write
00093         if (idx > 0) { // just release current used vectore
00094             m_relFileTrans.ReleaseVectorIdx(idx, m_vectorSize, &a_trans);
00095             idx = 0;
00096         }
00097         else {
00098             return false; // new has no size and old was not stored
00099         }
00100     }
00101     else { // vector has elements
00102         assert(a_buffer_p != NULL);
00103         if (idx == 0) {
00104             idx = m_relFileTrans.GetVectorIDX(a_vectorSize, &a_trans);
00105         }
00106         else if (a_vectorSize != m_vectorSize) {
00107             idx = m_relFileTrans.GetVectorIDX(a_vectorSize, &a_trans);
00108             m_relFileTrans.ReleaseVectorIdx(m_vectorIndex, m_vectorSize, &a_trans);
00109         }
00110         else if (!m_changed) {
00111             //  if nothing is changed just anounce caller with proper index and size
00112             a_vectorIndex = m_vectorIndex;
00113     //        a_vectorSize  = m_vectorSize;
00114             return false;
00115         }
00116         m_relFileTrans.WriteRec(idx, a_buffer_p, a_vectorSize, &a_trans);
00117     }
00118 
00119     a_vectorIndex = m_vectorIndex = idx;
00120     m_vectorSize  = a_vectorSize;
00121 
00122     m_changed = false;
00123 
00124     return true;
00125 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool fio_Vector::Write2DB ( const void *  a_buffer_p,
fio_Transaction a_trans 
)

Just write sime sized new data on same place.

Definition at line 129 of file fio_Vector.cpp.

References assert, m_changed, m_relFileTrans, m_vectorIndex, m_vectorSize, NULL, and fio_RelFile::WriteRec().

00130                                                             {
00131 
00132     assert(a_buffer_p != NULL);
00133 
00134     m_relFileTrans.WriteRec(m_vectorIndex, a_buffer_p, m_vectorSize, &a_trans);
00135 
00136     bool chg  = m_changed;
00137     m_changed = false;
00138 
00139     return chg;
00140 }

Here is the call graph for this function:

void fio_Vector::ReadFromDB ( void *  a_buffer_p  )  [inline]

Definition at line 119 of file fio_Vector.h.

Referenced by fio_BasicString::fio_BasicString(), fsc_nsDirEntryFormattedVec::fsc_nsDirEntryFormattedVec(), and fsc_nsStream::ReadFromDB().

00119                                          {
00120         m_relFileTrans.ReadRec(m_vectorIndex, a_buffer_p, m_vectorSize);
00121     };

Here is the caller graph for this function:

ivd_VectorSize_t fio_Vector::GetVectorSize (  )  [inline]

Definition at line 123 of file fio_Vector.h.

Referenced by fsc_nsDirEntryFormattedVec::Dump(), fsc_nsAttrStream::Dump(), and fsc_nsStream::ReadFromDB().

00123 { return m_vectorSize; };

Here is the caller graph for this function:

ivd_RecordIDX_t fio_Vector::GetVectorIndex (  )  [inline]

Definition at line 124 of file fio_Vector.h.

Referenced by fsc_nsDirEntryMgr::AddEntry(), fsc_nsAttrMgr::ChgAttributes(), fsc_nsAttrStream::Dump(), fsc_GenerationMgr::Dump(), and fsc_nsStream::ReadFromDB().

00124 { return m_vectorIndex; };

Here is the caller graph for this function:

void fio_Vector::Dump ( ostream &  os  ) 

Reimplemented in fio_BasicString, fsc_GenerationMgr, fsc_nsAttrStream, fsc_nsDirectory, fsc_nsDirEntryFormattedVec, fsc_nsDirEntryVec, and fsc_nsElement.

Definition at line 143 of file fio_Vector.cpp.

References cmn_File::GetFullPathRef(), m_changed, m_relFileTrans, m_vectorIndex, and m_vectorSize.

Referenced by fio_BasicString::Dump().

00143                                  {
00144     os << " vector linked to rel file " << m_relFileTrans.GetFullPathRef() << endl
00145        << " vector changed " << boolalpha << m_changed << endl
00146        << " vector size " << m_vectorSize << endl
00147        << " vector idx  " << m_vectorIndex << endl;
00148 }

Here is the call graph for this function:

Here is the caller graph for this function:


Friends And Related Function Documentation

friend class ut_fio_Vector [friend]

Definition at line 62 of file fio_Vector.h.


Member Data Documentation

bool fio_Vector::m_changed [protected]


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

Generated on Mon Feb 27 19:18:51 2012 for OPENARCHIVE by  doxygen 1.5.6