Files

50 lines
1.2 KiB
C++
Raw Permalink Normal View History

#ifndef DEVICEREATTACHER_H
#define DEVICEREATTACHER_H
#include <functional>
#include <memory>
2025-10-16 01:00:48 -04:00
#include <boost/asio/deadline_timer.hpp>
2026-06-09 11:19:42 -04:00
#include <spinscale/co/dynamicPostingInvoker.h>
#include <spinscale/co/nonViralTaskNursery.h>
#include <spinscale/co/postTarget.h>
#include <spinscale/syncCancelerForAsyncWork.h>
namespace smo {
namespace device {
class DeviceManager;
class DeviceReattacher
{
public:
DeviceReattacher(
2025-12-27 16:21:22 -04:00
DeviceManager& parent, std::shared_ptr<sscl::ComponentThread> ioThread);
~DeviceReattacher() = default;
DeviceReattacher(const DeviceReattacher&) = delete;
DeviceReattacher& operator=(const DeviceReattacher&) = delete;
// Control methods
void start();
void stop();
private:
2026-06-09 11:19:42 -04:00
sscl::co::DynamicNonViralPostingInvoker deviceReattacherCDaemon(
sscl::co::ExplicitPostTarget postTarget,
std::exception_ptr &exceptionPtr,
2026-06-09 11:19:42 -04:00
std::function<void()> callback,
sscl::SyncCancelerForAsyncWork &canceler);
DeviceManager &parent;
2026-06-09 11:19:42 -04:00
// io_context thread for timer (see ctor).
std::shared_ptr<sscl::ComponentThread> ioThread;
2026-06-09 11:19:42 -04:00
sscl::co::NonViralTaskNursery taskNursery;
boost::asio::deadline_timer daemonTimer;
};
} // namespace device
} // namespace smo
#endif // DEVICEREATTACHER_H