LLDB mainline
lldb_private::Transport< Req, Resp, Evt > Class Template Referenceabstract

A transport is responsible for maintaining the connection to a client application, and reading/writing structured messages to it. More...

#include <JSONTransport.h>

Inheritance diagram for lldb_private::Transport< Req, Resp, Evt >:
[legend]

Classes

class  MessageHandler
 Implemented to handle incoming messages. (See Run() below). More...

Public Types

using Message = std::variant<Req, Resp, Evt>
using MessageHandlerSP = std::shared_ptr<MessageHandler>

Public Member Functions

virtual ~Transport ()=default
virtual llvm::Error Send (const Evt &)=0
 Sends an event, a message that does not require a response.
virtual llvm::Error Send (const Req &)=0
 Sends a request, a message that expects a response.
virtual llvm::Error Send (const Resp &)=0
 Sends a response to a specific request.
virtual llvm::Expected< MainLoop::ReadHandleUPRegisterMessageHandler (MainLoop &loop, MessageHandler &handler)=0
 RegisterMessageHandler registers the Transport with the given MainLoop and handles any incoming messages using the given MessageHandler.
template<typename... Ts>
auto Logv (const char *Fmt, Ts &&...Vals)
virtual void Log (llvm::StringRef message)=0

Detailed Description

template<typename Req, typename Resp, typename Evt>
class lldb_private::Transport< Req, Resp, Evt >

A transport is responsible for maintaining the connection to a client application, and reading/writing structured messages to it.

Transports have limited thread safety requirements:

  • Messages will not be sent concurrently.
  • Messages MAY be sent while Run() is reading, or its callback is active.

Definition at line 59 of file JSONTransport.h.

Member Typedef Documentation

◆ Message

template<typename Req, typename Resp, typename Evt>
using lldb_private::Transport< Req, Resp, Evt >::Message = std::variant<Req, Resp, Evt>

Definition at line 61 of file JSONTransport.h.

◆ MessageHandlerSP

template<typename Req, typename Resp, typename Evt>
using lldb_private::Transport< Req, Resp, Evt >::MessageHandlerSP = std::shared_ptr<MessageHandler>

Definition at line 93 of file JSONTransport.h.

Constructor & Destructor Documentation

◆ ~Transport()

template<typename Req, typename Resp, typename Evt>
virtual lldb_private::Transport< Req, Resp, Evt >::~Transport ( )
virtualdefault

Reimplemented in lldb_protocol::mcp::Transport.

Member Function Documentation

◆ Log()

template<typename Req, typename Resp, typename Evt>
virtual void lldb_private::Transport< Req, Resp, Evt >::Log ( llvm::StringRef message)
pure virtual

◆ Logv()

template<typename Req, typename Resp, typename Evt>
template<typename... Ts>
auto lldb_private::Transport< Req, Resp, Evt >::Logv ( const char * Fmt,
Ts &&... Vals )
inline

◆ RegisterMessageHandler()

template<typename Req, typename Resp, typename Evt>
virtual llvm::Expected< MainLoop::ReadHandleUP > lldb_private::Transport< Req, Resp, Evt >::RegisterMessageHandler ( MainLoop & loop,
MessageHandler & handler )
pure virtual

RegisterMessageHandler registers the Transport with the given MainLoop and handles any incoming messages using the given MessageHandler.

If an unexpected error occurs, the MainLoop will be terminated and a log message will include additional information about the termination reason.

Implemented in lldb_private::JSONTransport< Req, Resp, Evt >.

◆ Send() [1/3]

template<typename Req, typename Resp, typename Evt>
virtual llvm::Error lldb_private::Transport< Req, Resp, Evt >::Send ( const Evt & )
pure virtual

Sends an event, a message that does not require a response.

Implemented in lldb_private::JSONTransport< Req, Resp, Evt >, and lldb_private::JSONTransport< Request, Response, Notification >.

◆ Send() [2/3]

template<typename Req, typename Resp, typename Evt>
virtual llvm::Error lldb_private::Transport< Req, Resp, Evt >::Send ( const Req & )
pure virtual

Sends a request, a message that expects a response.

Implemented in lldb_private::JSONTransport< Req, Resp, Evt >.

◆ Send() [3/3]

template<typename Req, typename Resp, typename Evt>
virtual llvm::Error lldb_private::Transport< Req, Resp, Evt >::Send ( const Resp & )
pure virtual

Sends a response to a specific request.

Implemented in lldb_private::JSONTransport< Req, Resp, Evt >.


The documentation for this class was generated from the following file: