00001
00002
00003
00004
00005
00006
00007 #ifndef __WVSTREAMSDEBUGGERSERVER_H
00008 #define __WVSTREAMSDEBUGGERSERVER_H
00009
00010 #include "wvstream.h"
00011 #include "wvstreamclone.h"
00012 #include "wvaddr.h"
00013 #include "wvistreamlist.h"
00014 #include "wvstreamsdebugger.h"
00015 #include "wvlog.h"
00016
00017 class WvUnixListener;
00018 class WvTCPListener;
00019
00020 class WvStreamsDebuggerServer : public WvStream
00021 {
00022 struct Connection : public WvStreamClone
00023 {
00024 WvStreamsDebugger debugger;
00025 WvString salt;
00026
00027 Connection(WvStream *s);
00028
00029 void result_cb(WvStringParm cmd, WvStringList &results);
00030
00031 void send(WvStringParm code, WvStringParm result);
00032 void send(WvStringParm code, WvStringList &results);
00033
00034 void choose_salt();
00035 };
00036
00037 typedef WvCallback<bool, WvStringParm, WvStringParm, WvStringParm> AuthCallback;
00038
00039 WvLog log;
00040
00041 WvUnixListener *unix_listener;
00042 void unix_listener_cb(WvStream &, void *);
00043 void unix_listener_close_cb(WvStream &);
00044
00045 WvTCPListener *tcp_listener;
00046 void tcp_listener_cb(WvStream &, void *);
00047 void tcp_listener_close_cb(WvStream &);
00048
00049 AuthCallback auth_cb;
00050
00051 void auth_request_cb(WvStream &_s, void *);
00052 void auth_response_cb(WvStream &_s, void *);
00053 void ready_cb(WvStream &_s, void *);
00054 void close_cb(WvStream &_s);
00055
00056 WvIStreamList streams;
00057
00058 public:
00059
00060 WvStreamsDebuggerServer(WvUnixAddr unix_addr,
00061 AuthCallback _auth_cb = AuthCallback(),
00062 WvIPPortAddr tcp_addr = WvIPPortAddr());
00063 ~WvStreamsDebuggerServer();
00064
00065 void set_auth_callback(AuthCallback _auth_cb)
00066 { auth_cb = _auth_cb; }
00067 };
00068
00069 #endif // __WVSTREAMSDEBUGGERSERVER_H