WvStreams
|
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 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