blob: 22fb7be4e9f6181f909744cce9d550ba13eca6d3 [file] [log] [blame]
Greg Clayton61d043b2011-03-22 04:00:09 +00001//===-- GDBRemoteCommunicationServer.h --------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_GDBRemoteCommunicationServer_h_
11#define liblldb_GDBRemoteCommunicationServer_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
Greg Clayton24bc5d92011-03-30 18:16:51 +000017#include "lldb/Target/Process.h"
18
Greg Clayton61d043b2011-03-22 04:00:09 +000019#include "GDBRemoteCommunication.h"
20
21class ProcessGDBRemote;
Greg Clayton24bc5d92011-03-30 18:16:51 +000022class StringExtractorGDBRemote;
Greg Clayton61d043b2011-03-22 04:00:09 +000023
24class GDBRemoteCommunicationServer : public GDBRemoteCommunication
25{
26public:
27 enum
28 {
29 eBroadcastBitRunPacketSent = kLoUserBroadcastBit
30 };
31 //------------------------------------------------------------------
32 // Constructors and Destructors
33 //------------------------------------------------------------------
34 GDBRemoteCommunicationServer();
35
36 virtual
37 ~GDBRemoteCommunicationServer();
38
39 bool
Greg Claytoncb8977d2011-03-23 00:09:55 +000040 GetPacketAndSendResponse (const lldb_private::TimeValue* timeout_ptr,
Greg Clayton58e26e02011-03-24 04:28:38 +000041 lldb_private::Error &error,
Greg Claytoncb8977d2011-03-23 00:09:55 +000042 bool &interrupt,
43 bool &quit);
Greg Clayton61d043b2011-03-22 04:00:09 +000044
45 virtual bool
46 GetThreadSuffixSupported ()
47 {
48 return true;
49 }
50
Greg Clayton58e26e02011-03-24 04:28:38 +000051 // After connecting, do a little handshake with the client to make sure
52 // we are at least communicating
53 bool
54 HandshakeWithClient (lldb_private::Error *error_ptr);
Greg Clayton61d043b2011-03-22 04:00:09 +000055
56protected:
57 lldb::thread_t m_async_thread;
Greg Clayton24bc5d92011-03-30 18:16:51 +000058 lldb_private::ProcessInfoList m_proc_infos;
59 uint32_t m_proc_infos_index;
Greg Clayton61d043b2011-03-22 04:00:09 +000060
61 size_t
Greg Clayton24bc5d92011-03-30 18:16:51 +000062 SendUnimplementedResponse (const char *packet);
63
64 size_t
65 SendErrorResponse (uint8_t error);
Greg Clayton61d043b2011-03-22 04:00:09 +000066
Greg Clayton58e26e02011-03-24 04:28:38 +000067 size_t
68 SendOKResponse ();
Greg Clayton61d043b2011-03-22 04:00:09 +000069
70 bool
Greg Clayton24bc5d92011-03-30 18:16:51 +000071 Handle_qHostInfo (StringExtractorGDBRemote &packet);
72
73 bool
74 Handle_qProcessInfoPID (StringExtractorGDBRemote &packet);
75
76 bool
77 Handle_qfProcessInfo (StringExtractorGDBRemote &packet);
78
79 bool
80 Handle_qsProcessInfo (StringExtractorGDBRemote &packet);
81
82 bool
83 Handle_qUserName (StringExtractorGDBRemote &packet);
84
85 bool
86 Handle_qGroupName (StringExtractorGDBRemote &packet);
Greg Clayton61d043b2011-03-22 04:00:09 +000087
Greg Clayton58e26e02011-03-24 04:28:38 +000088 bool
Greg Clayton24bc5d92011-03-30 18:16:51 +000089 Handle_QStartNoAckMode (StringExtractorGDBRemote &packet);
Greg Clayton58e26e02011-03-24 04:28:38 +000090
Greg Clayton61d043b2011-03-22 04:00:09 +000091private:
92 //------------------------------------------------------------------
93 // For GDBRemoteCommunicationServer only
94 //------------------------------------------------------------------
95 DISALLOW_COPY_AND_ASSIGN (GDBRemoteCommunicationServer);
96};
97
98#endif // liblldb_GDBRemoteCommunicationServer_h_