HttpRequestEmscriptenTask.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "HttpRequestEmscriptenTask.h"
  2. #include <emscripten.h>
  3. namespace oxygine
  4. {
  5. spHttpRequestTask HttpRequestTask::create()
  6. {
  7. return new HttpRequestEmscriptenTask;
  8. }
  9. void HttpRequestTask::init()
  10. {
  11. }
  12. void HttpRequestTask::release()
  13. {
  14. }
  15. void HttpRequestEmscriptenTask::_onload(void* data, unsigned size)
  16. {
  17. log::messageln("HttpRequestEmscriptenTask::_onload");
  18. _response.assign((char*)data, (char*)data + size);
  19. onComplete();
  20. releaseRef();
  21. }
  22. void HttpRequestEmscriptenTask::_onerror(int, const char*)
  23. {
  24. log::messageln("HttpRequestEmscriptenTask::_onerror");
  25. onError();
  26. releaseRef();
  27. }
  28. void HttpRequestEmscriptenTask::_onprogress(int, int)
  29. {
  30. Event ev(HttpRequestTask::PROGRESS);
  31. dispatchEvent(&ev);
  32. }
  33. void HttpRequestEmscriptenTask::_run()
  34. {
  35. addRef();
  36. log::messageln("HttpRequestEmscriptenTask::_run %s", _url.c_str());
  37. const char* method = _postData.empty() ? "GET" : "POST";
  38. if (!_postData.empty())
  39. _postData.push_back(0);
  40. emscripten_async_wget2_data(_url.c_str(), method, (char*)&_postData.front(), this, false, onload, onerror, onprogress);
  41. }
  42. //int emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, em_async_wget2_data_onload_func onload, em_async_wget2_data_onerror_func onerror, em_async_wget2_data_onprogress_func onprogress);
  43. //void emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, void (*onload)(void*, void*, unsigned), void (*onerror)(void*, int, const char*), void (*onprogress)(void*, int, int));
  44. //void emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, em_async_wget2_data_onload_func onload, em_async_wget2_data_onerror_func onerror, em_async_wget2_data_onprogress_func onprogress);
  45. }