1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
12 #include <cm3p/cppdap/io.h>
16 #include "cmDebuggerAdapter.h"
18 namespace cmDebugger
{
22 class cmDebuggerPipeConnection_POSIX
23 : public dap::ReaderWriter
24 , public cmDebuggerConnection
25 , public std::enable_shared_from_this
<cmDebuggerPipeConnection_POSIX
>
28 cmDebuggerPipeConnection_POSIX(std::string name
);
29 ~cmDebuggerPipeConnection_POSIX() override
;
31 void WaitForConnection() override
;
33 bool StartListening(std::string
& errorMessage
) override
;
34 std::shared_ptr
<dap::Reader
> GetReader() override
;
35 std::shared_ptr
<dap::Writer
> GetWriter() override
;
37 // dap::ReaderWriter implementation
39 bool isOpen() override
;
40 void close() override
;
41 size_t read(void* buffer
, size_t n
) override
;
42 bool write(void const* buffer
, size_t n
) override
;
44 // Used for unit test synchronization
45 std::promise
<void> StartedListening
;
48 void close_listen(); // release listen resources
50 std::string
const PipeName
;
52 int listen_fd
= -1; // listen fd
53 int rw_pipe
= -1; // rw fd
56 using cmDebuggerPipeConnection
= cmDebuggerPipeConnection_POSIX
;
58 class cmDebuggerPipeClient_POSIX
59 : public dap::ReaderWriter
60 , public std::enable_shared_from_this
<cmDebuggerPipeClient_POSIX
>
63 cmDebuggerPipeClient_POSIX(std::string name
);
64 ~cmDebuggerPipeClient_POSIX() override
;
65 void WaitForConnection();
67 bool isOpen() override
;
68 void close() override
;
69 size_t read(void* buffer
, size_t n
) override
;
70 bool write(void const* buffer
, size_t n
) override
;
73 std::string
const PipeName
;
77 using cmDebuggerPipeClient
= cmDebuggerPipeClient_POSIX
;
81 } // namespace cmDebugger