diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
| commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
| tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp | |
| parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
Notes
Diffstat (limited to 'source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp')
| -rw-r--r-- | source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp | 154 | 
1 files changed, 68 insertions, 86 deletions
| diff --git a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp index 4ee66b84d474..934824e214dc 100644 --- a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp +++ b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp @@ -25,114 +25,96 @@ using namespace lldb;  using namespace lldb_private;  using namespace lldb_private::process_gdb_remote; -GDBRemoteCommunicationServer::GDBRemoteCommunicationServer(const char *comm_name, -                                                           const char *listener_name) : -    GDBRemoteCommunication (comm_name, listener_name), -    m_exit_now (false) -{ -} +GDBRemoteCommunicationServer::GDBRemoteCommunicationServer( +    const char *comm_name, const char *listener_name) +    : GDBRemoteCommunication(comm_name, listener_name), m_exit_now(false) {} -GDBRemoteCommunicationServer::~GDBRemoteCommunicationServer() -{ -} +GDBRemoteCommunicationServer::~GDBRemoteCommunicationServer() {}  void GDBRemoteCommunicationServer::RegisterPacketHandler( -        StringExtractorGDBRemote::ServerPacketType packet_type, -        PacketHandler handler) -{ -    m_packet_handlers[packet_type] = std::move(handler); +    StringExtractorGDBRemote::ServerPacketType packet_type, +    PacketHandler handler) { +  m_packet_handlers[packet_type] = std::move(handler);  }  GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationServer::GetPacketAndSendResponse (uint32_t timeout_usec, -                                                        Error &error, -                                                        bool &interrupt, -                                                        bool &quit) -{ -    StringExtractorGDBRemote packet; - -    PacketResult packet_result = WaitForPacketWithTimeoutMicroSecondsNoLock (packet, timeout_usec, false); -    if (packet_result == PacketResult::Success) -    { -        const StringExtractorGDBRemote::ServerPacketType packet_type = packet.GetServerPacketType (); -        switch (packet_type) -        { -        case StringExtractorGDBRemote::eServerPacketType_nack: -        case StringExtractorGDBRemote::eServerPacketType_ack: -            break; - -        case StringExtractorGDBRemote::eServerPacketType_invalid: -            error.SetErrorString("invalid packet"); -            quit = true; -            break; - -        case StringExtractorGDBRemote::eServerPacketType_unimplemented: -            packet_result = SendUnimplementedResponse (packet.GetStringRef().c_str()); -            break; - -        default: -            auto handler_it = m_packet_handlers.find(packet_type); -            if (handler_it == m_packet_handlers.end()) -                packet_result = SendUnimplementedResponse (packet.GetStringRef().c_str()); -            else -                packet_result = handler_it->second (packet, error, interrupt, quit); -            break; -        } +GDBRemoteCommunicationServer::GetPacketAndSendResponse( +    Timeout<std::micro> timeout, Error &error, bool &interrupt, bool &quit) { +  StringExtractorGDBRemote packet; + +  PacketResult packet_result = WaitForPacketNoLock(packet, timeout, false); +  if (packet_result == PacketResult::Success) { +    const StringExtractorGDBRemote::ServerPacketType packet_type = +        packet.GetServerPacketType(); +    switch (packet_type) { +    case StringExtractorGDBRemote::eServerPacketType_nack: +    case StringExtractorGDBRemote::eServerPacketType_ack: +      break; + +    case StringExtractorGDBRemote::eServerPacketType_invalid: +      error.SetErrorString("invalid packet"); +      quit = true; +      break; + +    case StringExtractorGDBRemote::eServerPacketType_unimplemented: +      packet_result = SendUnimplementedResponse(packet.GetStringRef().c_str()); +      break; + +    default: +      auto handler_it = m_packet_handlers.find(packet_type); +      if (handler_it == m_packet_handlers.end()) +        packet_result = +            SendUnimplementedResponse(packet.GetStringRef().c_str()); +      else +        packet_result = handler_it->second(packet, error, interrupt, quit); +      break;      } -    else -    { -        if (!IsConnected()) -        { -            error.SetErrorString("lost connection"); -            quit = true; -        } -        else -        { -            error.SetErrorString("timeout"); -        } +  } else { +    if (!IsConnected()) { +      error.SetErrorString("lost connection"); +      quit = true; +    } else { +      error.SetErrorString("timeout");      } +  } -    // Check if anything occurred that would force us to want to exit. -    if (m_exit_now) -        quit = true; +  // Check if anything occurred that would force us to want to exit. +  if (m_exit_now) +    quit = true; -    return packet_result; +  return packet_result;  }  GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationServer::SendUnimplementedResponse (const char *) -{ -    // TODO: Log the packet we aren't handling... -    return SendPacketNoLock ("", 0); +GDBRemoteCommunicationServer::SendUnimplementedResponse(const char *) { +  // TODO: Log the packet we aren't handling... +  return SendPacketNoLock("");  } -  GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationServer::SendErrorResponse (uint8_t err) -{ -    char packet[16]; -    int packet_len = ::snprintf (packet, sizeof(packet), "E%2.2x", err); -    assert (packet_len < (int)sizeof(packet)); -    return SendPacketNoLock (packet, packet_len); +GDBRemoteCommunicationServer::SendErrorResponse(uint8_t err) { +  char packet[16]; +  int packet_len = ::snprintf(packet, sizeof(packet), "E%2.2x", err); +  assert(packet_len < (int)sizeof(packet)); +  return SendPacketNoLock(llvm::StringRef(packet, packet_len));  }  GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationServer::SendIllFormedResponse (const StringExtractorGDBRemote &failed_packet, const char *message) -{ -    Log *log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PACKETS)); -    if (log) -        log->Printf ("GDBRemoteCommunicationServer::%s: ILLFORMED: '%s' (%s)", __FUNCTION__, failed_packet.GetStringRef ().c_str (), message ? message : ""); -    return SendErrorResponse (0x03); +GDBRemoteCommunicationServer::SendIllFormedResponse( +    const StringExtractorGDBRemote &failed_packet, const char *message) { +  Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PACKETS)); +  if (log) +    log->Printf("GDBRemoteCommunicationServer::%s: ILLFORMED: '%s' (%s)", +                __FUNCTION__, failed_packet.GetStringRef().c_str(), +                message ? message : ""); +  return SendErrorResponse(0x03);  }  GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationServer::SendOKResponse () -{ -    return SendPacketNoLock ("OK", 2); +GDBRemoteCommunicationServer::SendOKResponse() { +  return SendPacketNoLock("OK");  } -bool -GDBRemoteCommunicationServer::HandshakeWithClient() -{ -    return GetAck() == PacketResult::Success; +bool GDBRemoteCommunicationServer::HandshakeWithClient() { +  return GetAck() == PacketResult::Success;  } | 
