X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5..06578d6778bff8aa2bd6a2387651dd0ba55aa27c:/lib/network/httpd.h diff --git a/lib/network/httpd.h b/lib/network/httpd.h index 791d49c8..aa8c5288 100644 --- a/lib/network/httpd.h +++ b/lib/network/httpd.h @@ -4,9 +4,10 @@ #include #include +#include #include #include -#include +#include #include #include #include @@ -15,14 +16,17 @@ class eHTTPConnection; class eHTTPDataSource; class eHTTPD; -class eHTTPPathResolver +class eHTTPDataSource; +typedef ePtr eHTTPDataSourcePtr; + +class iHTTPPathResolver: public iObject { public: - virtual ~eHTTPPathResolver() {}; - virtual eHTTPDataSource *getDataSource(eString request, eString path, eHTTPConnection *conn)=0; + virtual ~iHTTPPathResolver() {}; + virtual RESULT getDataSource(eHTTPDataSourcePtr &source, std::string request, std::string path, eHTTPConnection *conn)=0; }; -class eHTTPDataSource +class eHTTPDataSource: public iObject { protected: eHTTPConnection *connection; @@ -33,8 +37,12 @@ public: virtual int doWrite(int bytes); // number of written bytes, -1 for "no more" }; +typedef ePtr eHTTPDataSourcePtr; + class eHTTPError: public eHTTPDataSource { + DECLARE_REF(eHTTPError); +private: int errcode; public: eHTTPError(eHTTPConnection *c, int errcode); @@ -47,13 +55,13 @@ class eHTTPConnection: public eSocket { void doError(int error); - int getLine(eString &line); + int getLine(std::string &line); int processLocalState(); int processRemoteState(); void writeString(const char *data); - eHTTPDataSource *data; + eHTTPDataSourcePtr data; eHTTPD *parent; int buffersize; @@ -93,13 +101,13 @@ public: ~eHTTPConnection(); // stateRequest - eString request, requestpath, httpversion; + std::string request, requestpath, httpversion; int is09; // stateResponse int code; - eString code_descr; + std::string code_descr; std::map remote_header, local_header; @@ -110,14 +118,14 @@ public: class eHTTPD: public eServerSocket { friend class eHTTPConnection; - ePtrList resolver; + eSmartPtrList resolver; eMainloop *ml; public: eHTTPD(int port, eMainloop *ml); void newConnection(int socket); - void addResolver(eHTTPPathResolver *r) { resolver.push_back(r); } - void removeResolver(eHTTPPathResolver *r) { resolver.remove(r); } + void addResolver(iHTTPPathResolver *r) { resolver.push_back(r); } + void removeResolver(iHTTPPathResolver *r) { resolver.remove(r); } }; #endif