Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

wvtcp.h

Go to the documentation of this file.
00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * WvStream-based TCP connection and server classes.
00006  */ 
00007 #ifndef __WVTCP_H
00008 #define __WVTCP_H
00009 
00010 #include "wvstream.h"
00011 #include "wvaddr.h"
00012 #include "wvresolver.h"
00013 
00014 #ifdef ISBSD
00015 #include <netinet/in_systm.h>
00016 #define SOL_TCP 6
00017 #define SOL_IP 4
00018 #endif
00019 
00020 class WvStreamList;
00021 class WvTCPListener;
00022 
00028 class WvTCPConn : public WvStream
00029 {
00030     friend class WvTCPListener;
00031 protected:
00032     bool resolved, connected;
00033     WvString hostname;
00034     WvIPPortAddr remaddr;
00035     WvResolver dns;
00036     
00040     WvTCPConn(int _fd, const WvIPPortAddr &_remaddr);
00041     
00045     void do_connect();
00046     
00050     void check_resolver();
00051     
00052 public:
00058     WvTCPConn(const WvIPPortAddr &_remaddr);
00059     
00063     WvTCPConn(const WvString &_hostname, __u16 _port = 0);
00064 
00069     virtual ~WvTCPConn();
00070     
00075     void nice_tcpopts();
00076     
00081     void low_delay();
00082     
00088     WvIPPortAddr localaddr();
00089     
00094     virtual const WvIPPortAddr *src() const;
00095 
00099     bool isconnected() const
00100         { return connected; }
00101     
00105     virtual bool pre_select(SelectInfo &si);
00106     
00111     virtual bool post_select(SelectInfo &si);
00112     
00117     virtual bool isok() const;
00118 };
00119 
00123 class WvTCPListener : public WvStream
00124 {
00125 public:
00130     WvTCPListener(const WvIPPortAddr &_listenport);
00131 
00135     virtual ~WvTCPListener();
00136     
00140     virtual void close();
00141     
00148     WvTCPConn *accept();
00149     
00159     void auto_accept(WvStreamList *list,
00160                      WvStreamCallback callfunc = NULL, void *userdata = NULL);
00161 
00166     virtual size_t uread(void *buf, size_t len);
00167     virtual size_t uwrite(const void *buf, size_t len);
00168     
00172     virtual const WvIPPortAddr *src() const;
00173     
00174 protected:
00175     WvIPPortAddr listenport;
00176     WvStreamList *auto_list;
00177     WvStreamCallback auto_callback;
00178     void *auto_userdata;
00179     
00180     static void accept_callback(WvStream &s, void *userdata);
00181 };
00182 
00183 
00184 #endif // __WVTCP_H

Generated on Sat Aug 24 23:07:57 2002 for WvStreams by doxygen1.2.15