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
00057 class WvStreamsDaemon : public WvDaemon
00058 {
00059 private:
00060
00061 WvDaemonCallback callback;
00062
00063 bool do_full_close;
00064 WvIStreamList streams;
00065
00066 void init(WvDaemonCallback cb);
00067
00068 protected:
00069
00070 virtual void do_start();
00071 virtual void do_run();
00072 virtual void do_stop();
00073
00074 private:
00075
00076 void restart_close_cb(IWvStream *s, const char *id);
00077 void die_close_cb(IWvStream *s, const char *id);
00078
00079 public:
00080
00083 WvStreamsDaemon(WvStringParm name,
00084 WvStringParm version,
00085 WvDaemonCallback cb) :
00086 WvDaemon(name, version, WvDaemonCallback(),
00087 WvDaemonCallback(), WvDaemonCallback())
00088 {
00089 init(cb);
00090 }
00091
00095 void add_stream(IWvStream *istream,
00096 bool auto_free, const char *id);
00102 void add_restart_stream(IWvStream *istream,
00103 bool auto_free, const char *id);
00108 void add_die_stream(IWvStream *istream,
00109 bool auto_free, const char *id);
00110
00114 void close_existing_connections_on_restart()
00115 {
00116 do_full_close = true;
00117 }
00118
00120 void setcallback(WvDaemonCallback cb);
00121
00122 private:
00126 void add_stream(IWvStream *istream, bool auto_free, WvString id);
00127 void add_restart_stream(IWvStream *istream, bool auto_free, WvString id);
00128 void add_die_stream(IWvStream *istream, bool auto_free, WvString id);
00129 public:
00130 const char *wstype() const { return "WvStreamsDaemon"; }
00131 };
00132 #endif // __WVSTREAMSDAEMON_H