/* * VizionStreamer - Unix Socket Server Interface * Copyright (c) 2025 Maik Jurischka * * Licensed under CC BY-NC-SA 4.0 * https://creativecommons.org/licenses/by-nc-sa/4.0/ */ #pragma once #include #include #include #include #include class SocketServer { public: using CommandCallback = std::function; explicit SocketServer(const std::string& socketPath); ~SocketServer(); bool start(CommandCallback callback); void stop(); bool isRunning() const { return running_; } private: void serverLoop(); void handleClient(int clientFd) const; std::string socketPath_; int serverFd_; std::atomic running_; std::unique_ptr serverThread_; CommandCallback commandCallback_; };