#ifndef _AUTOTHREAD_H #define _AUTOTHREAD_H #include NS_BEGIN(Sia) NS_BEGIN(Api) class CSiaDriveConfig; class CSiaCurl; class SIADRIVE_EXPORTABLE CAutoThread { public: CAutoThread(CSiaDriveConfig* siaDriveConfig); CAutoThread(CSiaDriveConfig* siaDriveConfig, std::function autoThreadCallback); public: virtual ~CAutoThread(); private: bool _stopRequested; CSiaDriveConfig* _siaDriveConfig; std::function _AutoThreadCallback; std::unique_ptr _thread; std::mutex _startStopMutex; std::mutex _stopMutex; std::condition_variable _stopEvent; protected: virtual void AutoThreadCallback(CSiaDriveConfig* siaDriveConfig); public: bool IsRunning() const; void StartAutoThread(); void StopAutoThread(); }; NS_END(2) #endif //_AUTOTHREAD_H