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

UniCacheGen Class Reference

#include <unicachegen.h>

Inherits UniTempGen.

Collaboration diagram for UniCacheGen:

[legend]
List of all members.

Detailed Description

A UniConf generator that adds a cache layer on top of another generator.

This cache implementation preloads the entire uniconf tree and then keeps up to date by making changes whenever notifications are recieved. This means that a uniconfclient when cached will never actively contact the uniconfdaemon.

**WARNING** The cache *will* go out of date if used with a uniconfclient/daemon without running a select loop.

Definition at line 26 of file unicachegen.h.

Public Member Functions

 UniCacheGen (UniConfGen *_inner)
virtual ~UniCacheGen ()
virtual void set (const UniConfKey &key, WvStringParm value)
 Stores a string value for a key into the registry.

virtual WvString get (const UniConfKey &key)
 Fetches a string value for a key from the registry.

virtual bool exists (const UniConfKey &key)
 Without fetching its value, returns true if a key exists.

virtual bool haschildren (const UniConfKey &key)
 Returns true if a key has children.

virtual Iter * iterator (const UniConfKey &key)
 Returns an iterator over the children of the specified key.

void setcallback (const UniConfGenCallback &callback, void *userdata)
 Sets the callback for change notification.

void dispatch_delta (const UniConfKey &key, WvStringParm value)
 Immediately sends notification that a key has possibly changed.

void hold_delta ()
 Pauses notifications until matched with a call to unhold_delta().

void unhold_delta ()
 Resumes notifications when each hold_delta() has been matched.

void clear_delta ()
 Clears the list of pending notifications without sending them.

void flush_delta ()
 Flushes the list of pending notifications by sending them.

void delta (const UniConfKey &key, WvStringParm value)
 Call this when a key's value or children have possibly changed.

virtual bool isok ()
 Determines if the generator is usable and working properly.

virtual void commit ()
 Commits any changes.

virtual bool refresh ()
 Refreshes information about a key recursively.

virtual int str2int (WvStringParm s, int defvalue) const
 Converts a string to an integer.

virtual unsigned int addRef ()
virtual unsigned int release ()

Public Attributes

UniConfValueTreeroot
bool dirty

Protected Member Functions

void loadtree (const UniConfKey &key="")
void deltacallback (const UniConfKey &key, WvStringParm value, void *userdata)
void seterror (WvStringParm error)
 Raises an error condition.


Protected Attributes

WvLog log
UniConfGeninner

Friends

class NodeIter


Constructor & Destructor Documentation

UniCacheGen::UniCacheGen UniConfGen _inner  ) 
 

Definition at line 30 of file unicachegen.cc.

References deltacallback(), inner, loadtree(), log, UniConfGen::setcallback(), and UniConfGenCallback.

UniCacheGen::~UniCacheGen  )  [virtual]
 

Definition at line 41 of file unicachegen.cc.

References inner.


Member Function Documentation

virtual unsigned int GenericComponent< IObject >::addRef  )  [inline, virtual, inherited]
 

Implements IObject.

Definition at line 67 of file wvxplc.h.

void UniConfGen::clear_delta  )  [inherited]
 

Clears the list of pending notifications without sending them.

Does not affect the hold nesting count.

Definition at line 38 of file uniconfgen.cc.

virtual void UniConfGen::commit  )  [inline, virtual, inherited]
 

Commits any changes.

The default implementation does nothing.

Reimplemented in UniFilterGen, UniIniGen, UniListGen, UniMountGen, and UniMountTreeGen.

Definition at line 135 of file uniconfgen.h.

Referenced by UniFilterGen::commit(), UniMountTreeGen::unmount(), and UniMountGen::unmount().

void UniConfGen::delta const UniConfKey key,
WvStringParm  value
[inherited]
 

Call this when a key's value or children have possibly changed.

If the hold nesting count is 0, the notification is sent immediately. Otherwise it is added to a pending list for later.

Definition at line 69 of file uniconfgen.cc.

References UniConfGen::dispatch_delta(), UniConfGen::hold_delta(), UniConfGen::unhold_delta(), and WvStringParm.

Referenced by UniClientGen::deltacb(), UniFilterGen::gencallback(), UniMountGen::mountgen(), UniIniGen::refresh(), UniTempGen::set(), UniRegistryGen::set(), UniPStoreGen::set(), and UniMountGen::unmount().

void UniCacheGen::deltacallback const UniConfKey key,
WvStringParm  value,
void *  userdata
[protected]
 

Definition at line 70 of file unicachegen.cc.

References UniTempGen::set(), and WvStringParm.

Referenced by UniCacheGen().

void UniConfGen::dispatch_delta const UniConfKey key,
WvStringParm  value
[inherited]
 

Immediately sends notification that a key has possibly changed.

Takes care of the details of invoking the callback.

Note: You probably want to be using delta() instead.

Definition at line 62 of file uniconfgen.cc.

References WvStringParm.

Referenced by UniConfGen::delta(), and UniConfGen::flush_delta().

bool UniTempGen::exists const UniConfKey key  )  [virtual, inherited]
 

Without fetching its value, returns true if a key exists.

This is provided because it is often more efficient to test existance than to actually retrieve the value.

The default implementation returns !get(key).isnull().

Reimplemented from UniConfGen.

Definition at line 112 of file unitempgen.cc.

References UniConfTree< UniConfValueTree >::find(), and UniTempGen::root.

void UniConfGen::flush_delta  )  [inherited]
 

Flushes the list of pending notifications by sending them.

Does not affect the hold nesting count.

Definition at line 44 of file uniconfgen.cc.

References UniConfGen::dispatch_delta().

Referenced by UniConfGen::unhold_delta().

WvString UniTempGen::get const UniConfKey key  )  [virtual, inherited]
 

Fetches a string value for a key from the registry.

If the key doesn't exist, the return value is WvString::null.

Implements UniConfGen.

Definition at line 32 of file unitempgen.cc.

References UniConfTree< UniConfValueTree >::find(), UniTempGen::root, and UniConfValueTree::value().

bool UniTempGen::haschildren const UniConfKey key  )  [virtual, inherited]
 

Returns true if a key has children.

This is provided because it is often more efficient to test existance than to actually retrieve the keys.

The default implementation uses the iterator returned by iterator() to test whether the child has any keys. Subclasses are strongly encouraged to provide a better implementation.

Reimplemented from UniConfGen.

Definition at line 123 of file unitempgen.cc.

References UniConfTree< UniConfValueTree >::find(), UniHashTreeBase::haschildren(), and UniTempGen::root.

void UniConfGen::hold_delta  )  [inherited]
 

Pauses notifications until matched with a call to unhold_delta().

While paused, notification events are placed into a pending list. Redundant notifications may be discarded.

Use this to safeguard non-reentrant code.

Definition at line 23 of file uniconfgen.cc.

Referenced by UniMountTreeGen::commit(), UniMountGen::commit(), UniConfGen::delta(), UniClientGen::deltacb(), UniMountTreeGen::exists(), UniMountTreeGen::get(), UniMountTreeGen::haschildren(), UniConfGen::haschildren(), UniMountTreeGen::mountgen(), UniMountGen::mountgen(), UniMountTreeGen::refresh(), UniMountGen::refresh(), UniIniGen::refresh(), UniMountTreeGen::KeyIter::rewind(), UniTempGen::set(), UniClientGen::set(), UniMountTreeGen::unmount(), UniMountGen::unmount(), and UniMountTreeGen::whichmount().

bool UniConfGen::isok  )  [virtual, inherited]
 

Determines if the generator is usable and working properly.

The default implementation always returns true.

Reimplemented in UniClientGen, UniFilterGen, UniListGen, UniPStoreGen, and UniRegistryGen.

Definition at line 131 of file uniconfgen.cc.

Referenced by UniFilterGen::isok(), and trymount().

UniConfGen::Iter * UniTempGen::iterator const UniConfKey key  )  [virtual, inherited]
 

Returns an iterator over the children of the specified key.

Must not return NULL; consider returning a NullIter instead.

The caller takes ownership of the returned iterator and is responsible for deleting it when finished.

Implements UniConfGen.

Definition at line 134 of file unitempgen.cc.

References UniConfTree< UniConfValueTree >::find(), UniTempGen::NodeIter, and UniTempGen::root.

void UniCacheGen::loadtree const UniConfKey key = ""  )  [protected]
 

Definition at line 47 of file unicachegen.cc.

References UniConfGen::get(), UniConfGen::haschildren(), inner, UniConfGen::iterator(), UniConfGen::Iter::next(), UniConfGen::Iter::rewind(), and UniTempGen::set().

Referenced by UniCacheGen().

virtual bool UniConfGen::refresh  )  [inline, virtual, inherited]
 

Refreshes information about a key recursively.

May discard uncommitted data.

The default implementation always returns true.

Reimplemented in UniClientGen, UniConfFileTreeGen, UniFilterGen, UniIniGen, UniListGen, UniMountGen, and UniMountTreeGen.

Definition at line 143 of file uniconfgen.h.

Referenced by UniMountTreeGen::mountgen(), UniMountGen::mountgen(), and UniFilterGen::refresh().

virtual unsigned int GenericComponent< IObject >::release  )  [inline, virtual, inherited]
 

Implements IObject.

Definition at line 70 of file wvxplc.h.

void UniCacheGen::set const UniConfKey key,
WvStringParm  value
[virtual]
 

Stores a string value for a key into the registry.

If the value is WvString::null, the key is deleted.

Returns true on success.

Reimplemented from UniTempGen.

Definition at line 77 of file unicachegen.cc.

References inner, UniConfGen::set(), and WvStringParm.

void UniConfGen::setcallback const UniConfGenCallback callback,
void *  userdata
[inherited]
 

Sets the callback for change notification.

Must not be reimplemented by subclasses.

Definition at line 137 of file uniconfgen.cc.

References UniConfGenCallback.

Referenced by UniMountTreeGen::mountgen(), UniMountGen::mountgen(), UniFilterGen::setinner(), UniCacheGen(), UniConfRoot::UniConfRoot(), UniMountTreeGen::unmount(), UniMountGen::unmount(), and UniConfRoot::~UniConfRoot().

void UniConfGen::seterror WvStringParm  error  )  [inline, protected, inherited]
 

Raises an error condition.

Definition at line 57 of file uniconfgen.h.

Referenced by UniClientGen::do_select(), and UniClientGen::get().

int UniConfGen::str2int WvStringParm  s,
int  defvalue
const [virtual, inherited]
 

Converts a string to an integer.

If the string is null or not recognized, return defvalue.

This is here to support the common str2int(get(key)).

The default implementation recognizes the booleans 'true', 'yes', 'on' and 'enabled' as 1, and 'false', 'no', 'off' and 'disabled' as 0.

Definition at line 105 of file uniconfgen.cc.

References WvFastString::cstr(), WvFastString::isnull(), and WvStringParm.

void UniConfGen::unhold_delta  )  [inherited]
 

Resumes notifications when each hold_delta() has been matched.

On resumption, dispatches all pending notifications except those that were destined to watches that were removed.

Use this to safeguard non-reentrant code.

Definition at line 29 of file uniconfgen.cc.

References UniConfGen::flush_delta().

Referenced by UniMountTreeGen::commit(), UniMountGen::commit(), UniConfGen::delta(), UniClientGen::deltacb(), UniMountTreeGen::exists(), UniMountTreeGen::get(), UniMountTreeGen::haschildren(), UniConfGen::haschildren(), UniMountTreeGen::mountgen(), UniMountGen::mountgen(), UniMountTreeGen::refresh(), UniMountGen::refresh(), UniIniGen::refresh(), UniMountTreeGen::KeyIter::rewind(), UniTempGen::set(), UniClientGen::set(), UniMountTreeGen::unmount(), UniMountGen::unmount(), and UniMountTreeGen::whichmount().


Friends And Related Function Documentation

friend class NodeIter [friend, inherited]
 

Definition at line 23 of file unitempgen.h.

Referenced by UniTempGen::iterator().


Member Data Documentation

bool UniTempGen::dirty [inherited]
 

set whenever the tree actually changes

Definition at line 27 of file unitempgen.h.

Referenced by UniTempGen::set().

UniConfGen* UniCacheGen::inner [protected]
 

Definition at line 30 of file unicachegen.h.

Referenced by loadtree(), set(), UniCacheGen(), and ~UniCacheGen().

WvLog UniCacheGen::log [protected]
 

Definition at line 29 of file unicachegen.h.

UniConfValueTree* UniTempGen::root [inherited]
 

the root of the tree

Definition at line 26 of file unitempgen.h.

Referenced by UniTempGen::exists(), UniTempGen::get(), UniTempGen::haschildren(), UniTempGen::iterator(), UniIniGen::refresh(), UniTempGen::set(), and UniTempGen::~UniTempGen().


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