#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class WebsocketServerProcess { // shared data between Unix processes struct shared_data_t { std::mutex mutex; // for synchronization between processes (!) char subprotocol[1024]{}; // instead of std::string since std::string allocates data on heap char target[1024]{}; }; public: WebsocketServerProcess(); ~WebsocketServerProcess(); bool is_running(); void start(); void stop(); std::string subprotocol(); std::string target(); private: void do_session(boost::asio::ip::tcp::socket socket); private: int m_pid{}; int m_count{}; std::unique_ptr> m_shared; }; // class WebsocketServerProcess