wvstreamsdaemon.h

00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Tunnel Vision Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  *
00005  * High-level abstraction for creating daemon processes that do
00006  * nothing but listen on a list of WvStreams and add connections
00007  * to the global list.
00008  */
00009 #ifndef __WVSTREAMSDAEMON_H
00010 #define __WVSTREAMSDAEMON_H
00011 
00012 #include "wvdaemon.h"
00013 #include "iwvstream.h"
00014 #include "wvistreamlist.h"
00015 
00016 class WvStreamsDaemon;
00017 
00018 typedef WvCallback<void, WvStreamsDaemon &, void *> WvStreamsDaemonCallback;
00019 
00061 class WvStreamsDaemon : public WvDaemon
00062 {
00063 private:
00064 
00065     WvStreamsDaemonCallback callback;
00066     void *userdata;
00067 
00068     bool do_full_close;
00069     WvIStreamList streams;
00070 
00071     void init(WvStreamsDaemonCallback cb, void *ud);
00072 
00073 protected:
00074 
00075     virtual void do_start();
00076     virtual void do_run();
00077     virtual void do_stop();
00078 
00079 private:
00080 
00081     void restart_close_cb(const char *, WvStream &);
00082     void die_close_cb(const char *, WvStream &);
00083 
00084 public:
00085 
00088     WvStreamsDaemon(WvStringParm name,
00089             WvStringParm version,
00090             WvStreamsDaemonCallback cb,
00091             void *ud = NULL) :
00092         WvDaemon(name, version, WvDaemonCallback(),
00093                 WvDaemonCallback(), WvDaemonCallback())
00094     {
00095         init(cb, ud);
00096     }
00097 
00100     WvStreamsDaemon(WvStringParm name, 
00101             WvStreamsDaemonCallback cb,
00102             void *ud = NULL) :
00103         WvDaemon(name, WvDaemonCallback(),
00104                 WvDaemonCallback(), WvDaemonCallback())
00105     {
00106         init(cb, ud);
00107     }
00108 
00112     void add_stream(IWvStream *istream,
00113                     bool auto_free, const char *id = NULL);
00119     void add_restart_stream(IWvStream *istream,
00120                             bool auto_free, const char *id = NULL);
00125     void add_die_stream(IWvStream *istream,
00126                         bool auto_free, const char *id = NULL);
00127 
00131     void close_existing_connections_on_restart()
00132     {
00133         do_full_close = true;
00134     }
00135 
00137     void setcallback(WvStreamsDaemonCallback cb, void *ud = NULL);
00138 
00139 public:
00140     const char *wstype() const { return "WvStreamsDaemon"; }
00141 };
00142 #endif // __WVSTREAMSDAEMON_H

Generated on Fri Oct 5 18:20:28 2007 for WvStreams by  doxygen 1.5.3