CNetworkJob.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include <AK/Function.h>
  3. #include <LibCore/CObject.h>
  4. class CNetworkResponse;
  5. class CNetworkJob : public CObject {
  6. C_OBJECT(CNetworkJob)
  7. public:
  8. enum class Error {
  9. None,
  10. ConnectionFailed,
  11. TransmissionFailed,
  12. ProtocolFailed,
  13. Cancelled,
  14. };
  15. virtual ~CNetworkJob() override;
  16. Function<void(bool success)> on_finish;
  17. bool is_cancelled() const { return m_error == Error::Cancelled; }
  18. bool has_error() const { return m_error != Error::None; }
  19. Error error() const { return m_error; }
  20. CNetworkResponse* response() { return m_response.ptr(); }
  21. const CNetworkResponse* response() const { return m_response.ptr(); }
  22. virtual void start() = 0;
  23. virtual void shutdown() = 0;
  24. void cancel()
  25. {
  26. shutdown();
  27. m_error = Error::Cancelled;
  28. }
  29. protected:
  30. CNetworkJob();
  31. void did_finish(NonnullRefPtr<CNetworkResponse>&&);
  32. void did_fail(Error);
  33. private:
  34. RefPtr<CNetworkResponse> m_response;
  35. Error m_error { Error::None };
  36. };
  37. const char* to_string(CNetworkJob::Error);