wvstreamsdebuggerserver.h

00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * A server stream for WvStreamsDebugger connections
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     // Username, salt, md5sum("%s%s", salt, password)
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

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