/usr/include/wvstreams/unireplicategen.h is in libwvstreams-dev 4.6.1-11.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /* -*- Mode: C++ -*-
* Worldvisions Weaver Software:
* Copyright (C) 2002 Net Integration Technologies, Inc.
*
* A UniConf generator that caches keys/values in memory.
*/
#ifndef __UNIREPLICATEGEN_H
#define __UNIREPLICATEGEN_H
#include "uniconftree.h"
#include "wvlog.h"
/**
* A UniConf generator that replicates generators between an ordered list
* of inner generators, with the priority given by the list.
*
* Replication of the data occurs when the generator is contructed, whenever
* prepend() or append() is called, or whenever any of the generators in the
* list goes from !isok() to isok(). If two inner generators contain different
* values for the same before replication, then they will both have the value
* of the earlier generator (as ordered in the moniker) after replication.
*
* If an asynchronous change occurs in any of the inner generators, the
* new value will be set in all generators irrespective of priority.
*/
class UniReplicateGen : public UniConfGen
{
private:
struct Gen
{
IUniConfGen *gen;
bool was_ok;
bool auto_free;
Gen(IUniConfGen *_gen, bool _auto_free)
: gen(_gen), was_ok(gen->isok()), auto_free(_auto_free) {}
~Gen() { if (auto_free) WVRELEASE(gen); }
bool isok() { return was_ok = gen->isok(); }
};
DeclareWvList(Gen);
GenList gens;
bool processing_callback;
Gen *first_ok() const;
void replicate_if_any_have_become_ok();
protected:
void replicate(const UniConfKey &key = "/");
void deltacallback(Gen *src_gen, const UniConfKey &key,
WvStringParm value);
public:
UniReplicateGen();
UniReplicateGen(const IUniConfGenList &_gens, bool autofree = true);
virtual ~UniReplicateGen();
void prepend(IUniConfGen *gen, bool autofree = true);
void append(IUniConfGen *gen, bool autofree = true);
/***** Overridden members *****/
virtual bool isok();
virtual void commit();
virtual bool refresh();
virtual void flush_buffers() { }
virtual void set(const UniConfKey &key, WvStringParm value);
virtual void setv(const UniConfPairList &pairs);
virtual WvString get(const UniConfKey &key);
virtual Iter *iterator(const UniConfKey &key);
};
#endif // __UNIREPLICATEGEN_H
|