#pragma once #include #include #include class GTCPSocket; class GHttpJob final : public GNetworkJob { public: explicit GHttpJob(const GHttpRequest&); virtual ~GHttpJob() override; virtual void start() override; virtual const char* class_name() const override { return "GHttpJob"; } private: void on_socket_connected(); enum class State { InStatus, InHeaders, InBody, Finished, }; GHttpRequest m_request; GTCPSocket* m_socket { nullptr }; State m_state { State::InStatus }; int m_code { -1 }; HashMap m_headers; };