NetworkJob.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/Debug.h>
  7. #include <LibCore/NetworkJob.h>
  8. #include <LibCore/NetworkResponse.h>
  9. namespace Core {
  10. NetworkJob::NetworkJob(OutputStream& output_stream)
  11. : m_output_stream(output_stream)
  12. {
  13. }
  14. NetworkJob::~NetworkJob()
  15. {
  16. }
  17. void NetworkJob::start(NonnullRefPtr<Core::Socket>)
  18. {
  19. }
  20. void NetworkJob::shutdown()
  21. {
  22. }
  23. void NetworkJob::did_finish(NonnullRefPtr<NetworkResponse>&& response)
  24. {
  25. // NOTE: We protect ourselves here, since the on_finish callback may otherwise
  26. // trigger destruction of this job somehow.
  27. NonnullRefPtr<NetworkJob> protector(*this);
  28. m_response = move(response);
  29. dbgln_if(CNETWORKJOB_DEBUG, "{} job did_finish", *this);
  30. VERIFY(on_finish);
  31. on_finish(true);
  32. shutdown();
  33. }
  34. void NetworkJob::did_fail(Error error)
  35. {
  36. // NOTE: We protect ourselves here, since the on_finish callback may otherwise
  37. // trigger destruction of this job somehow.
  38. NonnullRefPtr<NetworkJob> protector(*this);
  39. m_error = error;
  40. dbgln_if(CNETWORKJOB_DEBUG, "{}{{{:p}}} job did_fail! error: {} ({})", class_name(), this, (unsigned)error, to_string(error));
  41. VERIFY(on_finish);
  42. on_finish(false);
  43. shutdown();
  44. }
  45. void NetworkJob::did_progress(Optional<u32> total_size, u32 downloaded)
  46. {
  47. // NOTE: We protect ourselves here, since the callback may otherwise
  48. // trigger destruction of this job somehow.
  49. NonnullRefPtr<NetworkJob> protector(*this);
  50. if (on_progress)
  51. on_progress(total_size, downloaded);
  52. }
  53. const char* to_string(NetworkJob::Error error)
  54. {
  55. switch (error) {
  56. case NetworkJob::Error::ProtocolFailed:
  57. return "ProtocolFailed";
  58. case NetworkJob::Error::ConnectionFailed:
  59. return "ConnectionFailed";
  60. case NetworkJob::Error::TransmissionFailed:
  61. return "TransmissionFailed";
  62. case NetworkJob::Error::Cancelled:
  63. return "Cancelled";
  64. default:
  65. return "(Unknown error)";
  66. }
  67. }
  68. }