WvStreams
unitransactiongen.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 2002 Net Integration Technologies, Inc.
4  *
5  * A UniConfGen that represents pending transactions to another generator.
6  */
7 #ifndef __UNITRANSACTIONGEN_H
8 #define __UNITRANSACTIONGEN_H
9 
10 #include "uniconfgen.h"
11 
12 class UniConfChangeTree;
13 class UniConfValueTree;
14 
81 {
82 public:
88 
94 
95 
96  /***** Overridden methods *****/
97 
98  virtual WvString get(const UniConfKey &key);
99  virtual void set(const UniConfKey &key, WvStringParm value);
100  virtual void setv(const UniConfPairList &pairs);
101  virtual void commit();
102  virtual bool refresh();
103  virtual Iter *iterator(const UniConfKey &key);
104  virtual bool isok();
105  virtual void flush_buffers();
106 
107 protected:
108  UniConfChangeTree *root;
109  IUniConfGen *base;
110 
114  void apply_changes(UniConfChangeTree *node,
115  const UniConfKey &section);
116 
120  void apply_values(UniConfValueTree *newcontents,
121  const UniConfKey &section);
122 
127  const UniConfKey &section);
128 
132  void cancel_values(UniConfValueTree *newcontents,
133  const UniConfKey &section);
134 
138  void gencallback(const UniConfKey &key,
139  WvStringParm value);
140 
146  const UniConfKey &key,
147  int seg,
148  WvStringParm value);
149 
150  UniConfChangeTree *create_change(UniConfChangeTree *parent,
151  const UniConfKey &key,
152  int seg,
153  WvStringParm value);
154 
155  UniConfValueTree *set_value(UniConfValueTree *node,
156  const UniConfKey &key,
157  int seg,
158  WvStringParm value);
159 
160  UniConfChangeTree *set_change(UniConfChangeTree *node,
161  const UniConfKey &key,
162  int seg,
163  WvStringParm value);
164 
168  void deletion_simulator(const UniConfKey &key);
169 
173  void deletion_simulator2(const UniConfKey &key);
174 
179  void deletion_visitor(const UniConfValueTree *node, void *userdata);
180 };
181 
182 #endif
UniTransactionGen::apply_values
void apply_values(UniConfValueTree *newcontents, const UniConfKey &section)
A recursive helper function for apply_changes().
Definition: unitransactiongen.cc:353
UniTransactionGen::get
virtual WvString get(const UniConfKey &key)
Fetches a string value for a key from the registry.
Definition: unitransactiongen.cc:216
UniTransactionGen::flush_buffers
virtual void flush_buffers()
Flushes any commitment/notification buffers .
Definition: unitransactiongen.cc:823
UniTransactionGen::cancel_changes
void cancel_changes(UniConfChangeTree *node, const UniConfKey &section)
A recursive helper function for refresh().
Definition: unitransactiongen.cc:466
UniTransactionGen::~UniTransactionGen
~UniTransactionGen()
Destroys the UniTransactionGen and the underlying generator.
Definition: unitransactiongen.cc:209
UniTransactionGen::iterator
virtual Iter * iterator(const UniConfKey &key)
Returns an iterator over the children of the specified key.
Definition: unitransactiongen.cc:310
UniTransactionGen::apply_changes
void apply_changes(UniConfChangeTree *node, const UniConfKey &section)
A recursive helper function for commit().
Definition: unitransactiongen.cc:378
UniTransactionGen::cancel_values
void cancel_values(UniConfValueTree *newcontents, const UniConfKey &section)
A recursive helper function for cancel_changes().
Definition: unitransactiongen.cc:430
UniTransactionGen::deletion_simulator
void deletion_simulator(const UniConfKey &key)
A recursive helper function for create_change().
Definition: unitransactiongen.cc:587
WvString
WvString is an implementation of a simple and efficient printable-string class.
Definition: wvstring.h:329
IUniConfGen
An abstract data container that backs a UniConf tree.
Definition: uniconfgen.h:39
UniTransactionGen::create_value
UniConfValueTree * create_value(UniConfValueTree *parent, const UniConfKey &key, int seg, WvStringParm value)
Four functions to implement the functionality of set() so that it isn't two pages long.
Definition: unitransactiongen.cc:560
UniTransactionGen::gencallback
void gencallback(const UniConfKey &key, WvStringParm value)
The callback function for the underlying generator.
Definition: unitransactiongen.cc:504
UniTransactionGen::set
virtual void set(const UniConfKey &key, WvStringParm value)
Stores a string value for a key into the registry.
Definition: unitransactiongen.cc:253
UniTransactionGen::deletion_visitor
void deletion_visitor(const UniConfValueTree *node, void *userdata)
A UniConfTree visitor function for set_value(), cancel_values(), and cancel_changes().
Definition: unitransactiongen.cc:421
UniConfKey
Represents a UniConf key which is a path in a hierarchy structured much like the traditional Unix fil...
Definition: uniconfkey.h:38
UniTransactionGen
A UniConfGen that represents pending transactions to another generator.
Definition: unitransactiongen.h:80
UniTransactionGen::refresh
virtual bool refresh()
Refreshes information about a key recursively.
Definition: unitransactiongen.cc:292
UniConfChangeTree
Definition: unitransactiongen.cc:47
UniTransactionGen::commit
virtual void commit()
Commits any changes.
Definition: unitransactiongen.cc:269
UniConfGen
A default implementation of IUniConfGen, providing various handy features that save trouble when impl...
Definition: uniconfgen.h:199
UniTransactionGen::UniTransactionGen
UniTransactionGen(IUniConfGen *_base)
Constructs a UniTransactionGen for the given underlying generator, which must be non-null.
Definition: unitransactiongen.cc:202
UniTransactionGen::deletion_simulator2
void deletion_simulator2(const UniConfKey &key)
A recursive helper function for set_change().
Definition: unitransactiongen.cc:717
UniConfValueTree
A plain UniConfTree that holds keys and values.
Definition: uniconftree.h:152
UniTransactionGen::isok
virtual bool isok()
Determines if the generator is usable and working properly.
Definition: unitransactiongen.cc:818
UniTransactionGen::setv
virtual void setv(const UniConfPairList &pairs)
Stores multiple key-value pairs into the registry.
Definition: unitransactiongen.cc:260
UniConfGen::Iter
An abstract iterator over keys and values in a generator.
Definition: uniconfgen.h:323