mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-16 05:10:32 +00:00

to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
79 lines
2.5 KiB
C++
79 lines
2.5 KiB
C++
//===-- GDBRemoteCommunicationServer.h --------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_GDBRemoteCommunicationServer_h_
|
|
#define liblldb_GDBRemoteCommunicationServer_h_
|
|
|
|
#include <functional>
|
|
#include <map>
|
|
|
|
#include "GDBRemoteCommunication.h"
|
|
#include "lldb/lldb-private-forward.h"
|
|
|
|
class StringExtractorGDBRemote;
|
|
|
|
namespace lldb_private {
|
|
namespace process_gdb_remote {
|
|
|
|
class ProcessGDBRemote;
|
|
|
|
class GDBRemoteCommunicationServer : public GDBRemoteCommunication {
|
|
public:
|
|
using PortMap = std::map<uint16_t, lldb::pid_t>;
|
|
using PacketHandler =
|
|
std::function<PacketResult(StringExtractorGDBRemote &packet,
|
|
Status &error, bool &interrupt, bool &quit)>;
|
|
|
|
GDBRemoteCommunicationServer(const char *comm_name,
|
|
const char *listener_name);
|
|
|
|
~GDBRemoteCommunicationServer() override;
|
|
|
|
void
|
|
RegisterPacketHandler(StringExtractorGDBRemote::ServerPacketType packet_type,
|
|
PacketHandler handler);
|
|
|
|
PacketResult GetPacketAndSendResponse(Timeout<std::micro> timeout,
|
|
Status &error, bool &interrupt,
|
|
bool &quit);
|
|
|
|
// After connecting, do a little handshake with the client to make sure
|
|
// we are at least communicating
|
|
bool HandshakeWithClient();
|
|
|
|
protected:
|
|
std::map<StringExtractorGDBRemote::ServerPacketType, PacketHandler>
|
|
m_packet_handlers;
|
|
bool m_exit_now; // use in asynchronous handling to indicate process should
|
|
// exit.
|
|
|
|
bool m_send_error_strings = false; // If the client enables this then
|
|
// we will send error strings as well.
|
|
|
|
PacketResult Handle_QErrorStringEnable(StringExtractorGDBRemote &packet);
|
|
|
|
PacketResult SendErrorResponse(const Status &error);
|
|
|
|
PacketResult SendUnimplementedResponse(const char *packet);
|
|
|
|
PacketResult SendErrorResponse(uint8_t error);
|
|
|
|
PacketResult SendIllFormedResponse(const StringExtractorGDBRemote &packet,
|
|
const char *error_message);
|
|
|
|
PacketResult SendOKResponse();
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(GDBRemoteCommunicationServer);
|
|
};
|
|
|
|
} // namespace process_gdb_remote
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_GDBRemoteCommunicationServer_h_
|