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