55 template <
typename Status,
typename T>
65 virtual ~
Task() =
default;
74 auto status = publisher->attemptPublish(getBatchData());
75 this->onComplete(status);
82 this->onComplete(
FAIL);
97 virtual T& getBatchData() = 0;
105 std::shared_ptr<T> batch_data) :
Task<T>()
107 this->batch_data_ = batch_data;
109 this->upload_status_function_ =
nullptr;
115 if (upload_status_function_) {
116 upload_status_function_(status, *batch_data_);
124 upload_status_function_ = upload_status_function;
UploadStatusFunction< UploadStatus, T > upload_status_function_
T & getBatchData() override
void setOnCompleteFunction(const UploadStatusFunction< UploadStatus, T > upload_status_function)
void onComplete(const UploadStatus &status) override
std::function< void(const Status &upload_status, const T &message)> UploadStatusFunction
virtual void run(std::shared_ptr< IPublisher< T >> publisher)
virtual UploadStatus attemptPublish(T &batch_data)=0
BasicTask(std::shared_ptr< T > batch_data)
std::shared_ptr< T > batch_data_