1
0
This repository has been archived on 2025-10-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
siadrive/include/siadrive_api/autothread.h
2025-10-21 07:58:47 -05:00

39 lines
830 B
C++

#ifndef _AUTOTHREAD_H
#define _AUTOTHREAD_H
#include <siacommon.h>
NS_BEGIN(Sia)
NS_BEGIN(Api)
class CSiaDriveConfig;
class CSiaCurl;
class SIADRIVE_EXPORTABLE CAutoThread
{
public:
CAutoThread(CSiaDriveConfig* siaDriveConfig);
CAutoThread(CSiaDriveConfig* siaDriveConfig, std::function<void(CSiaDriveConfig*)> autoThreadCallback);
public:
virtual ~CAutoThread();
private:
bool _stopRequested;
CSiaDriveConfig* _siaDriveConfig;
std::function<void(CSiaDriveConfig*)> _AutoThreadCallback;
std::unique_ptr<std::thread> _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