HttpSession.h 965 B

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