OW_NAMESPACE::HDB Class Reference

#include <OW_HDB.hpp>

Collaboration diagram for OW_NAMESPACE::HDB:

Collaboration graph
[legend]
List of all members.

Public Types

typedef bool HDB::* safe_bool

Public Member Functions

 HDB ()
 Create a new HDB object.
 ~HDB ()
 Destroy this HDB object.
void open (const char *fileName)
 Open this HDB object up for business.
void close ()
 Close this HDB object.
HDBHandle getHandle ()
 Create a new HDBHandle that is associated with this HDB object.
 operator safe_bool () const
bool operator! () const
int getHandleCount () const
String getFileName () const

Static Public Member Functions

static void writeBlock (HDBBlock &fblk, File &file, Int32 offset)
 Write the given HDBBlock.
static void readBlock (HDBBlock &fblk, const File &file, Int32 offset)
 Read the given HDBBlock.

Private Member Functions

bool createFile ()
void checkFile ()
void setOffsets (File &file, Int32 firstRootOffset, Int32 lastRootOffset, Int32 firstFreeOffset)
void setFirstRootOffSet (File &file, Int32 offset)
void setLastRootOffset (File &file, Int32 offset)
void setFirstFreeOffSet (File &file, Int32 offset)
Int32 getFirstRootOffSet ()
Int32 getLastRootOffset ()
Int32 getFirstFreeOffSet ()
Int32 findBlock (File &file, int size)
void removeBlockFromFreeList (File &file, HDBBlock &fblk)
void addRootNode (File &file, HDBBlock &fblk, Int32 offset)
void addBlockToFreeList (File &file, const HDBBlock &parmblk, Int32 offset)
Int32 getVersion ()
Int32 incVersion ()
void decHandleCount ()
IndexEntry findFirstIndexEntry (const char *key=NULL)
IndexEntry findNextIndexEntry ()
IndexEntry findPrevIndexEntry ()
IndexEntry findIndexEntry (const char *key)
bool addIndexEntry (const char *key, Int32 offset)
bool removeIndexEntry (const char *key)
bool updateIndexEntry (const char *key, Int32 newOffset)
void flushIndex ()

Private Attributes

HDBHeaderBlock m_hdrBlock
File m_lockFile
String m_fileName
Int32 m_version
int m_hdlCount
bool m_opened
IndexRef m_pindex
Mutex m_indexGuard
Mutex m_guard

Friends

class HDBNode
class HDBHandle
struct HDBHandle::HDBHandleData

Detailed Description

Definition at line 257 of file OW_HDB.hpp.


Member Typedef Documentation

typedef bool HDB::* OW_NAMESPACE::HDB::safe_bool
 

Definition at line 287 of file OW_HDB.hpp.


Constructor & Destructor Documentation

OW_NAMESPACE::HDB::HDB  ) 
 

Create a new HDB object.

Definition at line 58 of file OW_HDB.cpp.

OW_NAMESPACE::HDB::~HDB  ) 
 

Destroy this HDB object.

Definition at line 64 of file OW_HDB.cpp.

References close(), and m_hdlCount.


Member Function Documentation

void OW_NAMESPACE::HDB::addBlockToFreeList File file,
const HDBBlock parmblk,
Int32  offset
[private]
 

Definition at line 335 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, OW_NAMESPACE::HDBBlock::isFree, m_guard, m_hdrBlock, OW_NAMESPACE::HDBBlock::nextSib, OW_NAMESPACE::HDBBlock::prevSib, readBlock(), setFirstFreeOffSet(), OW_NAMESPACE::HDBBlock::size, and writeBlock().

Referenced by OW_NAMESPACE::HDBNode::write().

bool OW_NAMESPACE::HDB::addIndexEntry const char *  key,
Int32  offset
[private]
 

Definition at line 500 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

void OW_NAMESPACE::HDB::addRootNode File file,
HDBBlock fblk,
Int32  offset
[private]
 

Definition at line 401 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, OW_NAMESPACE::HDBHeaderBlock::firstRoot, OW_NAMESPACE::HDBHeaderBlock::lastRoot, m_guard, m_hdrBlock, OW_NAMESPACE::HDBBlock::nextSib, OW_NAMESPACE::HDBBlock::parent, OW_NAMESPACE::HDBBlock::prevSib, readBlock(), setLastRootOffset(), setOffsets(), and writeBlock().

Referenced by OW_NAMESPACE::HDBNode::write().

void OW_NAMESPACE::HDB::checkFile  )  [private]
 

Definition at line 152 of file OW_HDB.cpp.

References OW_NAMESPACE::String::c_str(), OW_NAMESPACE::File::close(), OW_NAMESPACE::Index::createIndexObject(), OW_NAMESPACE::HDBSIGLEN, OW_NAMESPACE::HDBVERSION, m_fileName, m_hdrBlock, m_pindex, OW_NAMESPACE::MinHDBVERSION, OW_NAMESPACE::FileSystem::openFile(), OW_HDBSIGNATURE, OW_THROW, and OW_NAMESPACE::File::read().

void OW_NAMESPACE::HDB::close  ) 
 

Close this HDB object.

Definition at line 81 of file OW_HDB.cpp.

References OW_NAMESPACE::File::close(), m_lockFile, m_opened, m_pindex, and OW_NAMESPACE::File::unlock().

Referenced by ~HDB().

bool OW_NAMESPACE::HDB::createFile  )  [private]
 

Definition at line 130 of file OW_HDB.cpp.

References OW_NAMESPACE::String::c_str(), OW_NAMESPACE::File::close(), OW_NAMESPACE::FileSystem::createFile(), OW_NAMESPACE::Index::createIndexObject(), OW_NAMESPACE::HDBVERSION, m_fileName, m_hdrBlock, m_pindex, OW_HDBSIGNATURE, OW_THROW, and OW_NAMESPACE::File::write().

void OW_NAMESPACE::HDB::decHandleCount  )  [private]
 

Definition at line 209 of file OW_HDB.cpp.

References m_guard, and m_hdlCount.

Referenced by OW_NAMESPACE::HDBHandle::HDBHandleData::~HDBHandleData().

Int32 OW_NAMESPACE::HDB::findBlock File file,
int  size
[private]
 

Referenced by OW_NAMESPACE::HDBNode::write().

IndexEntry OW_NAMESPACE::HDB::findFirstIndexEntry const char *  key = NULL  )  [private]
 

Definition at line 456 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

IndexEntry OW_NAMESPACE::HDB::findIndexEntry const char *  key  )  [private]
 

Definition at line 489 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

IndexEntry OW_NAMESPACE::HDB::findNextIndexEntry  )  [private]
 

Definition at line 467 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

IndexEntry OW_NAMESPACE::HDB::findPrevIndexEntry  )  [private]
 

Definition at line 478 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

void OW_NAMESPACE::HDB::flushIndex  )  [private]
 

Definition at line 533 of file OW_HDB.cpp.

References m_indexGuard, m_opened, and m_pindex.

String OW_NAMESPACE::HDB::getFileName  )  const [inline]
 

Returns:
The file name for this HDB object

Definition at line 302 of file OW_HDB.hpp.

Int32 OW_NAMESPACE::HDB::getFirstFreeOffSet  )  [inline, private]
 

Definition at line 330 of file OW_HDB.hpp.

Int32 OW_NAMESPACE::HDB::getFirstRootOffSet  )  [inline, private]
 

Definition at line 328 of file OW_HDB.hpp.

Referenced by OW_NAMESPACE::HDBNode::remove(), and OW_NAMESPACE::HDBNode::updateOffsets().

HDBHandle OW_NAMESPACE::HDB::getHandle  ) 
 

Create a new HDBHandle that is associated with this HDB object.

Returns:
An HDBHandle object that can be used to operate on this HDB object.
Exceptions:
HDBException if this HDB is not opened.

Definition at line 192 of file OW_HDB.cpp.

References HDBHandle, m_fileName, m_guard, m_hdlCount, m_opened, OW_NAMESPACE::FileSystem::openFile(), and OW_THROW.

int OW_NAMESPACE::HDB::getHandleCount  )  const [inline]
 

Returns:
The number of outstanding handles on this HDB

Definition at line 298 of file OW_HDB.hpp.

Int32 OW_NAMESPACE::HDB::getLastRootOffset  )  [inline, private]
 

Definition at line 329 of file OW_HDB.hpp.

Referenced by OW_NAMESPACE::HDBNode::remove(), and OW_NAMESPACE::HDBNode::updateOffsets().

Int32 OW_NAMESPACE::HDB::getVersion  )  [inline, private]
 

Definition at line 336 of file OW_HDB.hpp.

Int32 OW_NAMESPACE::HDB::incVersion  )  [private]
 

Definition at line 184 of file OW_HDB.cpp.

References m_guard, and m_version.

void OW_NAMESPACE::HDB::open const char *  fileName  ) 
 

Open this HDB object up for business.

Parameters:
fileName The file name associated with the database
Exceptions:
HDBException if an error occurs opening/creating files.

Definition at line 94 of file OW_HDB.cpp.

References m_fileName, m_guard, m_hdlCount, m_lockFile, m_opened, m_version, OW_NAMESPACE::FileSystem::openOrCreateFile(), OW_THROW, and OW_NAMESPACE::File::tryLock().

Referenced by OW_NAMESPACE::GenericHDBRepository::open().

OW_NAMESPACE::HDB::operator safe_bool  )  const [inline]
 

Returns:
true if this HDB is currently opened.

Definition at line 291 of file OW_HDB.hpp.

References m_opened.

bool OW_NAMESPACE::HDB::operator!  )  const [inline]
 

Definition at line 293 of file OW_HDB.hpp.

void OW_NAMESPACE::HDB::readBlock HDBBlock fblk,
const File file,
Int32  offset
[static]
 

Read the given HDBBlock.

Parameters:
fblk The HDBBlock to read.
file The file object to read fblk from.
offset The offset to read the block from.
Returns:
The number of bytes read on success. Otherwise -1
Exceptions:
HDBException 

Definition at line 439 of file OW_HDB.cpp.

References OW_NAMESPACE::calcCheckSum(), OW_THROW, and OW_NAMESPACE::File::read().

Referenced by addBlockToFreeList(), OW_NAMESPACE::HDBNode::addChild(), addRootNode(), OW_NAMESPACE::HDBNode::read(), OW_NAMESPACE::HDBNode::remove(), OW_NAMESPACE::HDBNode::removeBlock(), removeBlockFromFreeList(), and OW_NAMESPACE::HDBNode::updateOffsets().

void OW_NAMESPACE::HDB::removeBlockFromFreeList File file,
HDBBlock fblk
[private]
 

Definition at line 302 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, m_guard, m_hdrBlock, OW_NAMESPACE::HDBBlock::nextSib, OW_NAMESPACE::HDBBlock::prevSib, readBlock(), setFirstFreeOffSet(), and writeBlock().

bool OW_NAMESPACE::HDB::removeIndexEntry const char *  key  )  [private]
 

Definition at line 511 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

void OW_NAMESPACE::HDB::setFirstFreeOffSet File file,
Int32  offset
[private]
 

Definition at line 242 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstRoot, OW_NAMESPACE::HDBHeaderBlock::lastRoot, m_hdrBlock, and setOffsets().

Referenced by addBlockToFreeList(), and removeBlockFromFreeList().

void OW_NAMESPACE::HDB::setFirstRootOffSet File file,
Int32  offset
[private]
 

Definition at line 230 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, OW_NAMESPACE::HDBHeaderBlock::lastRoot, m_hdrBlock, and setOffsets().

Referenced by OW_NAMESPACE::HDBNode::remove(), and OW_NAMESPACE::HDBNode::updateOffsets().

void OW_NAMESPACE::HDB::setLastRootOffset File file,
Int32  offset
[private]
 

Definition at line 236 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, OW_NAMESPACE::HDBHeaderBlock::firstRoot, m_hdrBlock, and setOffsets().

Referenced by addRootNode(), OW_NAMESPACE::HDBNode::remove(), and OW_NAMESPACE::HDBNode::updateOffsets().

void OW_NAMESPACE::HDB::setOffsets File file,
Int32  firstRootOffset,
Int32  lastRootOffset,
Int32  firstFreeOffset
[private]
 

Definition at line 216 of file OW_HDB.cpp.

References OW_NAMESPACE::HDBHeaderBlock::firstFree, OW_NAMESPACE::HDBHeaderBlock::firstRoot, OW_NAMESPACE::HDBHeaderBlock::lastRoot, m_guard, m_hdrBlock, OW_THROW, and OW_NAMESPACE::File::write().

Referenced by addRootNode(), setFirstFreeOffSet(), setFirstRootOffSet(), and setLastRootOffset().

bool OW_NAMESPACE::HDB::updateIndexEntry const char *  key,
Int32  newOffset
[private]
 

Definition at line 522 of file OW_HDB.cpp.

References m_indexGuard, m_opened, m_pindex, and OW_THROW.

void OW_NAMESPACE::HDB::writeBlock HDBBlock fblk,
File file,
Int32  offset
[static]
 

Write the given HDBBlock.

Parameters:
fblk The HDBBlock to write.
file The file object to write fblk to.
offset The offset to write the block to.
Returns:
The number of bytes written on success. Otherwise -1

Definition at line 425 of file OW_HDB.cpp.

References OW_NAMESPACE::calcCheckSum(), OW_NAMESPACE::HDBBlock::chkSum, OW_THROW, and OW_NAMESPACE::File::write().

Referenced by addBlockToFreeList(), OW_NAMESPACE::HDBNode::addChild(), addRootNode(), OW_NAMESPACE::HDBNode::remove(), removeBlockFromFreeList(), OW_NAMESPACE::HDBNode::updateOffsets(), and OW_NAMESPACE::HDBNode::write().


Friends And Related Function Documentation

friend class HDBHandle [friend]
 

Definition at line 363 of file OW_HDB.hpp.

Referenced by getHandle().

friend struct HDBHandle::HDBHandleData [friend]
 

Definition at line 364 of file OW_HDB.hpp.

friend class HDBNode [friend]
 

Definition at line 362 of file OW_HDB.hpp.


Member Data Documentation

String OW_NAMESPACE::HDB::m_fileName [private]
 

Definition at line 355 of file OW_HDB.hpp.

Referenced by checkFile(), createFile(), getHandle(), and open().

Mutex OW_NAMESPACE::HDB::m_guard [private]
 

Definition at line 361 of file OW_HDB.hpp.

Referenced by addBlockToFreeList(), addRootNode(), decHandleCount(), getHandle(), incVersion(), open(), removeBlockFromFreeList(), and setOffsets().

int OW_NAMESPACE::HDB::m_hdlCount [private]
 

Definition at line 357 of file OW_HDB.hpp.

Referenced by decHandleCount(), getHandle(), open(), and ~HDB().

HDBHeaderBlock OW_NAMESPACE::HDB::m_hdrBlock [private]
 

Definition at line 353 of file OW_HDB.hpp.

Referenced by addBlockToFreeList(), addRootNode(), checkFile(), createFile(), removeBlockFromFreeList(), setFirstFreeOffSet(), setFirstRootOffSet(), setLastRootOffset(), and setOffsets().

Mutex OW_NAMESPACE::HDB::m_indexGuard [private]
 

Definition at line 360 of file OW_HDB.hpp.

Referenced by addIndexEntry(), findFirstIndexEntry(), findIndexEntry(), findNextIndexEntry(), findPrevIndexEntry(), flushIndex(), removeIndexEntry(), and updateIndexEntry().

File OW_NAMESPACE::HDB::m_lockFile [private]
 

Definition at line 354 of file OW_HDB.hpp.

Referenced by close(), and open().

bool OW_NAMESPACE::HDB::m_opened [private]
 

Definition at line 358 of file OW_HDB.hpp.

Referenced by addIndexEntry(), close(), findFirstIndexEntry(), findIndexEntry(), findNextIndexEntry(), findPrevIndexEntry(), flushIndex(), getHandle(), open(), operator safe_bool(), removeIndexEntry(), and updateIndexEntry().

IndexRef OW_NAMESPACE::HDB::m_pindex [private]
 

Definition at line 359 of file OW_HDB.hpp.

Referenced by addIndexEntry(), checkFile(), close(), createFile(), findFirstIndexEntry(), findIndexEntry(), findNextIndexEntry(), findPrevIndexEntry(), flushIndex(), removeIndexEntry(), and updateIndexEntry().

Int32 OW_NAMESPACE::HDB::m_version [private]
 

Definition at line 356 of file OW_HDB.hpp.

Referenced by incVersion(), and open().


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 09:16:38 2006 for openwbem by  doxygen 1.4.6