ES-DE/src/components/AsyncReqComponent.h

40 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "../GuiComponent.h"
#include "../HttpReq.h"
#include <functional>
/* Usage example:
std::shared_ptr<HttpReq> httpreq = std::make_shared<HttpReq>("cdn.garcya.us", "/wp-content/uploads/2010/04/TD250.jpg");
AsyncReqComponent* req = new AsyncReqComponent(mWindow, httpreq,
[] (std::shared_ptr<HttpReq> r)
{
LOG(LogInfo) << "Request completed";
LOG(LogInfo) << " error, if any: " << r->getErrorMsg();
}, [] ()
{
LOG(LogInfo) << "Request canceled";
});
mWindow->pushGui(req);
//we can forget about req, since it will always delete itself
*/
class AsyncReqComponent : public GuiComponent
{
public:
AsyncReqComponent(Window* window, std::shared_ptr<HttpReq> req, std::function<void(std::shared_ptr<HttpReq>)> onSuccess, std::function<void()> onCancel = nullptr);
bool input(InputConfig* config, Input input) override;
void update(int deltaTime) override;
void render(const Eigen::Affine3f& parentTrans) override;
private:
std::function<void(std::shared_ptr<HttpReq>)> mSuccessFunc;
std::function<void()> mCancelFunc;
unsigned int mTime;
std::shared_ptr<HttpReq> mRequest;
};