#pragma once #include "guid.hpp" #include namespace basalt::shared::deliver { struct DeliverConfig { std::uint32_t device; ///< The selected device if possible. }; enum class DeliverStatus { Ready, ///< Engine was allocated but not initialized. Running, ///< Engine has been initialized and running. Stop, ///< Engine is shutdown. }; class IDeliver { public: IDeliver(); virtual ~IDeliver(); public: virtual guid::Guid get_guid() const; virtual void startup(DeliverConfig&& config); virtual void transmit(); virtual void shutdown(); protected: DeliverConfig config; DeliverStatus status; }; }