Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

WvBdbHashBase Class Reference

#include <wvbdbhash.h>

Inherits WvError.

Inherited by WvBdbHash< K, D >.

Collaboration diagram for WvBdbHashBase:

[legend]
List of all members.

Public Member Functions

 WvBdbHashBase (WvStringParm _dbfile, bool persist_dbfile=true)
 ~WvBdbHashBase ()
void opendb (WvStringParm _dbfile, bool persist_dbfile=true)
 Open a new db file.

void closedb ()
 Close the db file.

void add (const datum &key, const datum &data, bool replace)
void remove (const datum &key)
datum find (const datum &key)
bool exists (const datum &key)
void zap ()
 Wipe the db.

virtual bool isok () const
 By default, returns true if geterr() == 0.

virtual int geterr () const
 If isok() is false, return the system error number corresponding to the error, -1 for a special error string (which you can obtain with errstr()) or 0 on end of file.

virtual WvString errstr () const
virtual void seterr (int _errnum)
 Set the errnum variable -- we have an error.

void seterr (WvStringParm specialerr)
void seterr (WVSTRING_FORMAT_DECL)
void seterr (const WvError &err)
void noerr ()
 Reset our error state - there's no error condition anymore.


Protected Attributes

int errnum
WvString errstring

Friends

class IterBase

Constructor & Destructor Documentation

WvBdbHashBase::WvBdbHashBase WvStringParm  _dbfile,
bool  persist_dbfile = true
 

Definition at line 42 of file wvbdbhash.cc.

References opendb(), and WvStringParm.

WvBdbHashBase::~WvBdbHashBase  ) 
 

Definition at line 49 of file wvbdbhash.cc.

References closedb().


Member Function Documentation

void WvBdbHashBase::add const datum key,
const datum data,
bool  replace
 

Definition at line 90 of file wvbdbhash.cc.

References WvError::isok(), and WvError::seterr().

Referenced by WvBdbHash< K, D >::add(), and WvBdbHashBase::IterBase::update().

void WvBdbHashBase::closedb  ) 
 

Close the db file.

Makes isok return false, so you must call opendb() before using it again. The effect on open iterators is undefined.

This can be called when !isok. It will always set the error message to "The db is closed" if it succeeds; if it sets it to anything else, there was an error while flushing the db.

Definition at line 77 of file wvbdbhash.cc.

References WvError::seterr().

Referenced by opendb(), zap(), and ~WvBdbHashBase().

WvString WvError::errstr  )  const [virtual, inherited]
 

Reimplemented in WvHTTPStream, and WvStreamClone.

Definition at line 20 of file wverror.cc.

References WvError::errnum, and WvError::errstring.

Referenced by UniIniGen::commit(), WvStreamClone::errstr(), main(), UniIniGen::refresh(), WvError::seterr(), UniConfDaemon::setupsslsocket(), UniConfDaemon::setuptcpsocket(), UniConfDaemon::setupunixsocket(), WvX509Mgr::WvX509Mgr(), and WvHttpPool::~WvHttpPool().

bool WvBdbHashBase::exists const datum key  ) 
 

Definition at line 140 of file wvbdbhash.cc.

References WvError::isok(), and WvError::seterr().

Referenced by WvBdbHash< K, D >::exists().

WvBdbHashBase::datum WvBdbHashBase::find const datum key  ) 
 

Definition at line 120 of file wvbdbhash.cc.

References WvError::isok(), and WvError::seterr().

Referenced by WvBdbHash< K, D >::find().

virtual int WvError::geterr  )  const [inline, virtual, inherited]
 

If isok() is false, return the system error number corresponding to the error, -1 for a special error string (which you can obtain with errstr()) or 0 on end of file.

If isok() is true, returns an undefined number.

Reimplemented in WvHTTPStream, and WvStreamClone.

Definition at line 44 of file wverror.h.

References WvError::errnum.

Referenced by UniIniGen::commit(), WvStreamClone::geterr(), WvEncoderStream::isok(), WvConf::load_file(), WvLockDev::lock(), main(), WvHTTPStream::pre_select(), UniIniGen::refresh(), WvConf::save(), WvError::seterr(), WvMagicCircle::WvMagicCircle(), and WvHttpPool::~WvHttpPool().

virtual bool WvError::isok  )  const [inline, virtual, inherited]
 

By default, returns true if geterr() == 0.

Might be overridden so that isok() == false even though no error code has been specified.

Reimplemented in UniClientConn, WvBufStream, WvDailyEvent, WvDsp, WvEncoderStream, WvFDStream, WvHTTPStream, WvIStreamList, WvLog, WvPamStream, WvSSLStream, IWvStream, WvStream, WvStreamClone, WvStreamList, WvTCPConn, WvTimeoutStream, WvTimeStream, WvFileWatcher, and UniConfDaemon.

Definition at line 35 of file wverror.h.

References WvError::errnum.

Referenced by add(), exists(), find(), WvStreamList::isok(), WvStream::isok(), main(), WvBdbHash< K, D >::Iter::next(), WvBdbHashBase::IterBase::next(), remove(), WvRSAEncoder::WvRSAEncoder(), WvRSAStream::WvRSAStream(), WvX509Mgr::WvX509Mgr(), and zap().

void WvError::noerr  )  [inline, inherited]
 

Reset our error state - there's no error condition anymore.

Definition at line 65 of file wverror.h.

References WvError::errnum.

Referenced by opendb(), and WvError::WvError().

void WvBdbHashBase::opendb WvStringParm  _dbfile,
bool  persist_dbfile = true
 

Open a new db file.

This will instantly change the contents of the db, and probably mess up all your iterators. Best used just after creation.

if dbfile is NULL, bdb will create an "anonymous" database. It'll still take up disk space, but it disappears when closed. If dbfile is not NULL but persist_dbfile is false, the file will be truncated when opened and deleted when closed.

It is ok to use this if !isok - in fact, it's the expected way to reset it. It may fail and seterr itself, though, so don't get stuck in a loop.

Definition at line 55 of file wvbdbhash.cc.

References closedb(), comparefunc(), WvFastString::cstr(), WvError::noerr(), WvError::seterr(), and WvStringParm.

Referenced by WvBdbHashBase(), and zap().

void WvBdbHashBase::remove const datum key  ) 
 

Definition at line 102 of file wvbdbhash.cc.

References WvError::isok(), and WvError::seterr().

Referenced by WvBdbHash< K, D >::remove(), and WvBdbHashBase::IterBase::xunlink().

void WvError::seterr const WvError err  )  [inherited]
 

Definition at line 64 of file wverror.cc.

References WvError::errstr(), WvError::geterr(), and WvError::seterr().

void WvError::seterr WVSTRING_FORMAT_DECL   )  [inline, inherited]
 

Reimplemented in WvStream.

Definition at line 60 of file wverror.h.

References WvError::seterr(), and WVSTRING_FORMAT_CALL.

void WvError::seterr WvStringParm  specialerr  )  [inherited]
 

Reimplemented in WvStream.

Definition at line 54 of file wverror.cc.

References WvError::errnum, WvError::errstring, WvError::seterr(), and WvStringParm.

void WvError::seterr int  _errnum  )  [virtual, inherited]
 

Set the errnum variable -- we have an error.

If called more than once, seterr() doesn't change the error code away from the previous one. That way, we remember the _original_ cause of our problems.

Subclasses may want to override seterr(int) to shut themselves down (eg. WvStream::close()) when an error condition is set.

Note that seterr(WvString) will call seterr(-1).

Reimplemented in WvStream.

Definition at line 47 of file wverror.cc.

References WvError::errnum.

Referenced by add(), closedb(), exists(), find(), main(), WvBdbHashBase::IterBase::next(), opendb(), remove(), WvStream::seterr(), WvError::seterr(), WvMagicCircle::WvMagicCircle(), WvRSAKey::WvRSAKey(), WvShmZone::WvShmZone(), and zap().

void WvBdbHashBase::zap  ) 
 

Wipe the db.

Calling this while !isok is allowed, but not guaranteed to fix it.

Definition at line 156 of file wvbdbhash.cc.

References closedb(), WvError::isok(), opendb(), and WvError::seterr().

Referenced by main().


Friends And Related Function Documentation

friend class IterBase [friend]
 

Definition at line 94 of file wvbdbhash.h.


Member Data Documentation

int WvError::errnum [protected, inherited]
 

Definition at line 22 of file wverror.h.

Referenced by WvError::errstr(), WvError::geterr(), WvError::isok(), WvError::noerr(), and WvError::seterr().

WvString WvError::errstring [protected, inherited]
 

Definition at line 23 of file wverror.h.

Referenced by WvError::errstr(), and WvError::seterr().


The documentation for this class was generated from the following files:
Generated on Sat Feb 21 21:05:56 2004 for WvStreams by doxygen 1.3.5