HttpSession.h 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. #ifndef HTTP_SESSION_H_
  2. #define HTTP_SESSION_H_
  3. #include "HttpPayload.h"
  4. class HttpSession {
  5. public:
  6. http_version version;
  7. http_session_type type;
  8. static HttpSession* New(http_session_type type = HTTP_CLIENT, http_version version = HTTP_V1);
  9. virtual ~HttpSession() {}
  10. virtual int GetSendData(char** data, size_t* len) = 0;
  11. virtual int FeedRecvData(const char* data, size_t len) = 0;
  12. virtual bool WantRecv() = 0;
  13. // client
  14. // SubmitRequest -> while(GetSendData) {send} -> InitResponse -> do {recv -> FeedRecvData} while(WantRecv)
  15. virtual int SubmitRequest(HttpRequest* req) = 0;
  16. virtual int InitResponse(HttpResponse* res) = 0;
  17. // server
  18. // InitRequest -> do {recv -> FeedRecvData} while(WantRecv) -> SubmitResponse -> while(GetSendData) {send}
  19. virtual int InitRequest(HttpRequest* req) = 0;
  20. virtual int SubmitResponse(HttpResponse* res) = 0;
  21. virtual int GetError() = 0;
  22. virtual const char* StrError(int error) = 0;
  23. };
  24. #endif // HTTP_SESSION_H_