/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2015 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_DEBUG_SERVER_MI_MI_SERVER_H_ #define XENIA_DEBUG_SERVER_MI_MI_SERVER_H_ #include #include "xenia/base/socket.h" #include "xenia/base/threading.h" #include "xenia/debug/debug_server.h" namespace xe { namespace debug { namespace server { namespace mi { class MICommandProcessor; class MIServer : public DebugServer { public: MIServer(Debugger* debugger); ~MIServer() override; Socket* client() const { return client_.get(); } bool Initialize() override; void PostSynchronous(std::function fn) override; private: void AcceptClient(std::unique_ptr client); bool HandleClientEvent(); std::unique_ptr socket_server_; std::unique_ptr client_; std::unique_ptr client_thread_; std::vector receive_buffer_; std::unique_ptr command_processor_; }; } // namespace mi } // namespace server } // namespace debug } // namespace xe #endif // XENIA_DEBUG_SERVER_MI_MI_SERVER_H_