blob: 04ec7f69136b3d2758f520e32e2ae3f48628efb9 [file] [log] [blame]
//===-- ConnectionMachPort.h --------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#if defined(__APPLE__)
#ifndef liblldb_ConnectionMachPort_h_
#define liblldb_ConnectionMachPort_h_
// C Includes
#include <mach/port.h>
#include <mach/kern_return.h>
// C++ Includes
#include <string>
// Other libraries and framework includes
// Project includes
#include "lldb/Core/Connection.h"
class ConnectionMachPort :
public lldb_private::Connection
{
public:
ConnectionMachPort ();
virtual
~ConnectionMachPort ();
virtual bool
IsConnected () const;
virtual lldb::ConnectionStatus
BytesAvailable (uint32_t timeout_usec, lldb_private::Error *error_ptr);
virtual lldb::ConnectionStatus
Connect (const char *s, lldb_private::Error *error_ptr);
virtual lldb::ConnectionStatus
Disconnect (lldb_private::Error *error_ptr);
virtual size_t
Read (void *dst,
size_t dst_len,
uint32_t timeout_usec,
lldb::ConnectionStatus &status,
lldb_private::Error *error_ptr);
virtual size_t
Write (const void *src,
size_t src_len,
lldb::ConnectionStatus &status,
lldb_private::Error *error_ptr);
lldb::ConnectionStatus
BootstrapCheckIn (const char *port_name,
lldb_private::Error *error_ptr);
lldb::ConnectionStatus
BootstrapLookup (const char *port_name,
lldb_private::Error *error_ptr);
struct PayloadType
{
uint32_t command;
uint32_t data_length;
uint8_t data[32];
};
kern_return_t
Send (const PayloadType &payload);
kern_return_t
Receive (PayloadType &payload);
protected:
mach_port_t m_task;
mach_port_t m_port;
private:
DISALLOW_COPY_AND_ASSIGN (ConnectionMachPort);
};
#endif // liblldb_ConnectionMachPort_h_
#endif // #if defined(__APPLE__)