//--------------------------------------------------------------------------- // // SCSI Target Emulator RaSCSI Reloaded // for Raspberry Pi // // Copyright (C) 2022 Uwe Seimet // //--------------------------------------------------------------------------- #pragma once #include "generated/rascsi_interface.pb.h" #include #include class CommandContext; using namespace std; using namespace rascsi_interface; class RascsiService { using callback = function; callback execute; int service_socket = -1; thread monthread; static inline volatile bool running = false; public: RascsiService() = default; ~RascsiService() = default; bool Init(const callback&, int); void Cleanup() const; bool IsRunning() const { return running; } void SetRunning(bool b) const { running = b; } private: void Execute() const; PbCommand ReadCommand(CommandContext&) const; static void KillHandler(int) { running = false; } };