WvStreams
wvtcp.h
00001 /* -*- Mode: C++ -*-
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 "wvautoconf.h"
00011 #include <stdio.h>
00012 #if HAVE_SYS_TYPES_H
00013 # include <sys/types.h>
00014 #endif
00015 #if STDC_HEADERS
00016 # include <stdlib.h>
00017 # include <stddef.h>
00018 #else
00019 # if HAVE_STDLIB_H
00020 #  include <stdlib.h>
00021 # endif
00022 #endif
00023 #if HAVE_SYS_SOCKET_H
00024 # include <sys/socket.h>
00025 #endif
00026 
00027 #include "wvfdstream.h"
00028 #include "wvaddr.h"
00029 #include "wvresolver.h"
00030 
00031 
00032 class WvTCPListener;
00033 
00039 class WvTCPConn : public WvFDStream
00040 {
00041     friend class WvTCPListener;
00042 protected:
00043     bool resolved, connected;
00044     WvString hostname;
00045     bool incoming;
00046     WvIPPortAddr remaddr;
00047     WvResolver dns;
00048     
00050     WvTCPConn(int _fd, const WvIPPortAddr &_remaddr);
00051     
00053     void do_connect();
00054     
00056     void check_resolver();
00057     
00058 public:
00064     WvTCPConn(const WvIPPortAddr &_remaddr);
00065     
00067     WvTCPConn(WvStringParm _hostname, uint16_t _port = 0);
00068 
00073     virtual ~WvTCPConn();
00074     
00079     void nice_tcpopts();
00080     
00085     void low_delay();
00086 
00091     void debug_mode();
00092 
00098     WvIPPortAddr localaddr();
00099     
00104     virtual const WvIPPortAddr *src() const;
00105 
00107     bool isconnected() const
00108         { return connected; }
00109     
00111     virtual void pre_select(SelectInfo &si);
00112     
00117     virtual bool post_select(SelectInfo &si);
00118     
00123     virtual bool isok() const;
00124 
00125 protected:
00126     virtual size_t uwrite(const void *buf, size_t count);
00127 
00128 public:
00129     const char *wstype() const { return "WvTCPConn"; }
00130 };
00131 
00132 
00133 #endif // __WVTCP_H