blob: 02440a2db962dabfaadaa759c55b832cf3fe3fad [file] [log] [blame]
//===-- GDBRemoteCommunicationServer.h --------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_GDBRemoteCommunicationServer_h_
#define liblldb_GDBRemoteCommunicationServer_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Target/Process.h"
#include "GDBRemoteCommunication.h"
class ProcessGDBRemote;
class StringExtractorGDBRemote;
class GDBRemoteCommunicationServer : public GDBRemoteCommunication
{
public:
enum
{
eBroadcastBitRunPacketSent = kLoUserBroadcastBit
};
//------------------------------------------------------------------
// Constructors and Destructors
//------------------------------------------------------------------
GDBRemoteCommunicationServer();
virtual
~GDBRemoteCommunicationServer();
bool
GetPacketAndSendResponse (const lldb_private::TimeValue* timeout_ptr,
lldb_private::Error &error,
bool &interrupt,
bool &quit);
virtual bool
GetThreadSuffixSupported ()
{
return true;
}
// After connecting, do a little handshake with the client to make sure
// we are at least communicating
bool
HandshakeWithClient (lldb_private::Error *error_ptr);
protected:
lldb::thread_t m_async_thread;
lldb_private::ProcessInfoList m_proc_infos;
uint32_t m_proc_infos_index;
size_t
SendUnimplementedResponse (const char *packet);
size_t
SendErrorResponse (uint8_t error);
size_t
SendOKResponse ();
bool
Handle_qHostInfo (StringExtractorGDBRemote &packet);
bool
Handle_qProcessInfoPID (StringExtractorGDBRemote &packet);
bool
Handle_qfProcessInfo (StringExtractorGDBRemote &packet);
bool
Handle_qsProcessInfo (StringExtractorGDBRemote &packet);
bool
Handle_qUserName (StringExtractorGDBRemote &packet);
bool
Handle_qGroupName (StringExtractorGDBRemote &packet);
bool
Handle_qSpeedTest (StringExtractorGDBRemote &packet);
bool
Handle_QStartNoAckMode (StringExtractorGDBRemote &packet);
private:
//------------------------------------------------------------------
// For GDBRemoteCommunicationServer only
//------------------------------------------------------------------
DISALLOW_COPY_AND_ASSIGN (GDBRemoteCommunicationServer);
};
#endif // liblldb_GDBRemoteCommunicationServer_h_