WvStreams
unislowgen.cc
00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 2002 Net Integration Technologies, Inc.
00004  * 
00005  * A UniConfGen that makes everything slow.  See unislowgen.h.
00006  */
00007 #include "unislowgen.h"
00008 #include "wvmoniker.h"
00009 #ifndef _MSC_VER // FIXME:WLACH Is unistd even needed here?!
00010 #include <unistd.h>
00011 #endif
00012 
00013 static IUniConfGen *creator(WvStringParm s, IObject *_obj)
00014 {
00015     return new UniSlowGen(wvcreate<IUniConfGen>(s, _obj));
00016 }
00017 
00018 static WvMoniker<IUniConfGen> reg("slow", creator);
00019 
00020 
00021 UniSlowGen::UniSlowGen(IUniConfGen *inner) : UniFilterGen(inner)
00022 {
00023     slowcount = 0;
00024 }
00025 
00026 
00027 UniSlowGen::~UniSlowGen()
00028 {
00029     fprintf(stderr, "%p: UniSlowGen: ran a total of %d slow operations.\n",
00030             this, how_slow());
00031 }
00032 
00033 
00034 void UniSlowGen::commit()
00035 {
00036     be_slow("commit()");
00037     UniFilterGen::commit();
00038 }
00039 
00040 
00041 bool UniSlowGen::refresh()
00042 {
00043     be_slow("refresh()");
00044     return UniFilterGen::refresh();
00045 }
00046 
00047 
00048 WvString UniSlowGen::get(const UniConfKey &key)
00049 {
00050     be_slow("get(%s)", key);
00051     return UniFilterGen::get(key);
00052 }
00053 
00054 
00055 bool UniSlowGen::exists(const UniConfKey &key)
00056 {
00057     be_slow("exists(%s)", key);
00058     return UniFilterGen::exists(key);
00059 }
00060 
00061 
00062 bool UniSlowGen::haschildren(const UniConfKey &key)
00063 {
00064     be_slow("haschildren(%s)", key);
00065     return UniFilterGen::haschildren(key);
00066 }
00067 
00068 
00069 UniConfGen::Iter *UniSlowGen::iterator(const UniConfKey &key)
00070 {
00071     be_slow("iterator(%s)", key);
00072     return UniFilterGen::iterator(key);
00073 }
00074 
00075 
00076 UniConfGen::Iter *UniSlowGen::recursiveiterator(const UniConfKey &key)
00077 {
00078     be_slow("recursiveiterator(%s)", key);
00079     return UniFilterGen::recursiveiterator(key);
00080 }
00081 
00082 
00083 void UniSlowGen::be_slow(WvStringParm what)
00084 {
00085     fprintf(stderr, "%p: UniSlowGen: slow operation: %s\n",
00086             this, what.cstr());
00087     // sleep(1);
00088     slowcount++;
00089 }
00090 
00091