#ifndef OPENPOSE_THREAD_WORKER_PRODUCER_HPP #define OPENPOSE_THREAD_WORKER_PRODUCER_HPP #include #include namespace op { template class WorkerProducer : public Worker { public: virtual ~WorkerProducer(); void work(TDatums& tDatums); protected: virtual TDatums workProducer() = 0; }; } // Implementation namespace op { template WorkerProducer::~WorkerProducer() { } template void WorkerProducer::work(TDatums& tDatums) { try { tDatums = std::move(workProducer()); } catch (const std::exception& e) { this->stop(); errorWorker(e.what(), __LINE__, __FUNCTION__, __FILE__); } } COMPILE_TEMPLATE_DATUM(WorkerProducer); } #endif // OPENPOSE_THREAD_WORKER_PRODUCER_HPP