]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ConnectionMachPort.h
MFV r306669:
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Core / ConnectionMachPort.h
1 //===-- ConnectionMachPort.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 #if defined(__APPLE__)
10
11 #ifndef liblldb_ConnectionMachPort_h_
12 #define liblldb_ConnectionMachPort_h_
13
14 // C Includes
15 #include <mach/port.h>
16 #include <mach/kern_return.h>
17
18 // C++ Includes
19 #include <string>
20
21 // Other libraries and framework includes
22 // Project includes
23 #include "lldb/Core/Connection.h"
24
25 class ConnectionMachPort :
26     public lldb_private::Connection
27 {
28 public:
29     ConnectionMachPort ();
30
31     virtual
32     ~ConnectionMachPort ();
33
34     virtual bool
35     IsConnected () const;
36
37     virtual lldb::ConnectionStatus
38     BytesAvailable (uint32_t timeout_usec, lldb_private::Error *error_ptr);
39
40     virtual lldb::ConnectionStatus
41     Connect (const char *s, lldb_private::Error *error_ptr);
42
43     virtual lldb::ConnectionStatus
44     Disconnect (lldb_private::Error *error_ptr);
45
46     virtual size_t
47     Read (void *dst, 
48           size_t dst_len, 
49           uint32_t timeout_usec,
50           lldb::ConnectionStatus &status, 
51           lldb_private::Error *error_ptr);
52
53     virtual size_t
54     Write (const void *src, 
55            size_t src_len, 
56            lldb::ConnectionStatus &status, 
57            lldb_private::Error *error_ptr);
58
59     virtual std::string
60     GetURI();
61
62     lldb::ConnectionStatus
63     BootstrapCheckIn (const char *port_name, 
64                       lldb_private::Error *error_ptr);
65
66     lldb::ConnectionStatus
67     BootstrapLookup (const char *port_name, 
68                      lldb_private::Error *error_ptr);
69
70     struct PayloadType
71     {
72         uint32_t command;
73         uint32_t data_length;
74         uint8_t data[32];
75     };
76     
77     kern_return_t
78     Send (const PayloadType &payload);
79     
80     kern_return_t
81     Receive (PayloadType &payload);
82     
83
84 protected:
85     mach_port_t m_task;
86     mach_port_t m_port;
87
88 private:
89     std::string m_uri;
90     
91
92     DISALLOW_COPY_AND_ASSIGN (ConnectionMachPort);
93 };
94
95 #endif  // liblldb_ConnectionMachPort_h_
96
97 #endif // #if defined(__APPLE__)