00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ARCHON_UTILITIES_WEB_CLIENT_H
00021 #define ARCHON_UTILITIES_WEB_CLIENT_H
00022
00023 #include <string>
00024 #include <vector>
00025
00026 #include <archon/util/exception.H>
00027 #include <archon/util/ref.H>
00028 #include <archon/util/stream.H>
00029 #include <archon/util/uri.H>
00030
00031 namespace Archon
00032 {
00033 namespace Utilities
00034 {
00038 namespace Web
00039 {
00040 using namespace std;
00041
00042 struct RequestException: virtual Exception
00043 {
00044 RequestException(string l, string m): Exception(l, m) {}
00045 };
00046
00047 struct Client: RefObjectBase
00048 {
00053 static Ref<Client> get(string applicationName,
00054 string applicationVersion,
00055 int maxSockets = 32)
00056 throw(UnexpectedException);
00057
00067 static Ref<Client> get(string applicationName,
00068 string applicationVersion,
00069 string cacheRootPath, long cacheSize,
00070 int maxSockets = 32)
00071 throw(UnexpectedException);
00072
00073
00074 struct Request: RefObjectBase
00075 {
00076 static Ref<Request> get(const Uri &);
00077
00078 const Uri &getUri() { return uri; }
00079
00080 protected:
00081 Request(const Uri &uri): uri(uri) {}
00082
00083 Uri uri;
00084 };
00085
00086 struct Response: virtual Stream::ReaderBase<char>
00087 {
00088 virtual string getContentType() = 0;
00089
00090 protected:
00091 Response() {}
00092 };
00093
00094 virtual Ref<Response> request(Ref<Request>) throw(RequestException) = 0;
00095
00096 protected:
00097 Client() {}
00098 };
00099 }
00100 }
00101 }
00102
00103 #endif // ARCHON_UTILITIES_WEB_CLIENT_H