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

wvhttp.h

Go to the documentation of this file.
00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  */ 
00005 #ifndef __WVHTTP_H
00006 #define __WVHTTP_H
00007 
00008 #include "wvtcp.h"
00009 #include "wvstreamclone.h"
00010 #include "wvresolver.h"
00011 #include "wvhashtable.h"
00012 
00013 class WvURL
00014 {
00015 public:
00016     WvURL(const WvString &url);
00017     ~WvURL();
00018     
00019     bool isok() const
00020         { return port != 0 && (resolving || addr != NULL); }
00021     const WvString &errstr() const
00022         { return err; }
00023     bool resolve(); // dns-resolve the hostname (returns true if done)
00024 
00025     operator WvString () const;
00026     
00027     // ONLY valid if resolve() returns true!
00028     const WvIPPortAddr &getaddr() const
00029         { return *addr; }
00030     const WvString &getfile() const
00031         { return file; }
00032     
00033 protected:
00034     WvString hostname;
00035     int port;
00036     bool resolving;
00037     WvResolver dns;
00038     WvIPPortAddr *addr;
00039     WvString file, err;
00040 };
00041 
00042 
00043 struct WvHTTPHeader
00044 {
00045     WvString name, value;
00046     
00047     WvHTTPHeader(const WvString &_name, const WvString &_value)
00048         : name(_name), value(_value) 
00049                 {}
00050 };
00051 
00052 
00053 DeclareWvDict(WvHTTPHeader, WvString, name);
00054 
00059 class WvHTTPStream : public WvStreamClone
00060 {
00061 public:
00062     enum State {Resolving = 0, Connecting, ReadHeader1, ReadHeader, ReadData,
00063                 Done};
00064     WvHTTPHeaderDict headers;
00065     WvHTTPHeaderDict client_headers;
00066     size_t num_received;
00067 
00071     WvHTTPStream(WvURL &_url);
00072     ~WvHTTPStream();
00073 
00074     virtual bool isok() const;
00075     virtual int geterr() const;
00076     virtual const char *errstr() const;
00077     virtual bool pre_select(SelectInfo &si);
00078     virtual size_t uread(void *buf, size_t count);
00079 
00080 public:
00081     WvURL &url;
00082     WvTCPConn *http;
00083     State state;
00084 };
00085 
00086 #endif // __WVHTTP_H

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