106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//===-- ConnectionSharedMemory.h --------------------------------*- C++ -*-===//
206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//
306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//                     The LLVM Compiler Infrastructure
406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//
506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// This file is distributed under the University of Illinois Open Source
606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// License. See LICENSE.TXT for details.
706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//
806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton//===----------------------------------------------------------------------===//
906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
1006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#ifndef liblldb_ConnectionSharedMemory_h_
1106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#define liblldb_ConnectionSharedMemory_h_
1206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
1306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// C Includes
1406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// C++ Includes
1506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#include <string>
1606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
1706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// Other libraries and framework includes
1806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton// Project includes
1906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#include "lldb/Core/Connection.h"
2006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#include "lldb/Core/DataBufferMemoryMap.h"
2106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
2206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Claytonnamespace lldb_private {
2306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
2406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Claytonclass ConnectionSharedMemory :
2506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    public Connection
2606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton{
2706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Claytonpublic:
2806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
2906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    ConnectionSharedMemory ();
3006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
3106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual
3206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    ~ConnectionSharedMemory ();
3306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
3406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual bool
3506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    IsConnected () const;
3606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
3706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual lldb::ConnectionStatus
3806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    BytesAvailable (uint32_t timeout_usec, Error *error_ptr);
3906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
4006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual lldb::ConnectionStatus
4106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    Connect (const char *s, Error *error_ptr);
4206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
4306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual lldb::ConnectionStatus
4406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    Disconnect (Error *error_ptr);
4506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
4606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual size_t
4763afdb07641f04aa7b60d895120b056124d3469bGreg Clayton    Read (void *dst,
4863afdb07641f04aa7b60d895120b056124d3469bGreg Clayton          size_t dst_len,
4963afdb07641f04aa7b60d895120b056124d3469bGreg Clayton          uint32_t timeout_usec,
5063afdb07641f04aa7b60d895120b056124d3469bGreg Clayton          lldb::ConnectionStatus &status,
5163afdb07641f04aa7b60d895120b056124d3469bGreg Clayton          Error *error_ptr);
5206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
5306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    virtual size_t
5406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    Write (const void *src, size_t src_len, lldb::ConnectionStatus &status, Error *error_ptr);
5506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
5606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    lldb::ConnectionStatus
5706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    Open (bool create, const char *name, size_t size, Error *error_ptr);
5806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
5906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Claytonprotected:
6006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
6106d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    std::string m_name;
6206d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    int m_fd;    // One buffer that contains all we need
6306d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    DataBufferMemoryMap m_mmap;
6406d7cc86937caca0acf2b990a02a641dc9c7579aGreg Claytonprivate:
6506d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton    DISALLOW_COPY_AND_ASSIGN (ConnectionSharedMemory);
6606d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton};
6706d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
6806d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton} // namespace lldb_private
6906d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton
7006d7cc86937caca0acf2b990a02a641dc9c7579aGreg Clayton#endif  // liblldb_ConnectionSharedMemory_h_
71