00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __WVSTREAMSDAEMON_H
00010 #define __WVSTREAMSDAEMON_H
00011
00012 #include "wvdaemon.h"
00013 #include "iwvstream.h"
00014 #include "wvistreamlist.h"
00015
00030 class WvStreamsDaemon : public WvDaemon
00031 {
00032 private:
00033
00034 WvDaemonCallback callback;
00035
00036 bool do_full_close;
00037 WvIStreamList streams;
00038
00039 void init(WvDaemonCallback cb);
00040
00041 protected:
00042
00043 virtual void do_start();
00044 virtual void do_run();
00045 virtual void do_stop();
00046
00047 private:
00048
00049 void restart_close_cb(IWvStream *s, const char *id);
00050 void die_close_cb(IWvStream *s, const char *id);
00051
00052 public:
00053
00056 WvStreamsDaemon(WvStringParm name,
00057 WvStringParm version,
00058 WvDaemonCallback cb) :
00059 WvDaemon(name, version, WvDaemonCallback(),
00060 WvDaemonCallback(), WvDaemonCallback())
00061 {
00062 init(cb);
00063 }
00064
00068 void add_stream(IWvStream *istream,
00069 bool auto_free, const char *id);
00075 void add_restart_stream(IWvStream *istream,
00076 bool auto_free, const char *id);
00081 void add_die_stream(IWvStream *istream,
00082 bool auto_free, const char *id);
00083
00087 void close_existing_connections_on_restart()
00088 {
00089 do_full_close = true;
00090 }
00091
00093 void setcallback(WvDaemonCallback cb);
00094
00095 private:
00099 void add_stream(IWvStream *istream, bool auto_free, WvString id);
00100 void add_restart_stream(IWvStream *istream, bool auto_free, WvString id);
00101 void add_die_stream(IWvStream *istream, bool auto_free, WvString id);
00102 public:
00103 const char *wstype() const { return "WvStreamsDaemon"; }
00104 };
00105 #endif // __WVSTREAMSDAEMON_H