diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:51:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:51:52 +0000 | 
| commit | 5f29bb8a675e8f96452b632e7129113f7dec850e (patch) | |
| tree | 3d3f2a0d3ad10872a4dcaba8ec8d1d20c87ab147 /source/API/SBCommunication.cpp | |
| parent | 88c643b6fec27eec436c8d138fee6346e92337d6 (diff) | |
Notes
Diffstat (limited to 'source/API/SBCommunication.cpp')
| -rw-r--r-- | source/API/SBCommunication.cpp | 218 | 
1 files changed, 89 insertions, 129 deletions
diff --git a/source/API/SBCommunication.cpp b/source/API/SBCommunication.cpp index 63b672efe3c02..90df70bde72f1 100644 --- a/source/API/SBCommunication.cpp +++ b/source/API/SBCommunication.cpp @@ -1,65 +1,77 @@  //===-- SBCommunication.cpp -------------------------------------*- C++ -*-===//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===//  #include "lldb/API/SBCommunication.h" +#include "SBReproducerPrivate.h"  #include "lldb/API/SBBroadcaster.h"  #include "lldb/Core/Communication.h"  #include "lldb/Host/ConnectionFileDescriptor.h"  #include "lldb/Host/Host.h" -#include "lldb/Utility/Log.h"  using namespace lldb;  using namespace lldb_private; -SBCommunication::SBCommunication() : m_opaque(NULL), m_opaque_owned(false) {} +SBCommunication::SBCommunication() : m_opaque(nullptr), m_opaque_owned(false) { +  LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBCommunication); +}  SBCommunication::SBCommunication(const char *broadcaster_name)      : m_opaque(new Communication(broadcaster_name)), m_opaque_owned(true) { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - -  if (log) -    log->Printf("SBCommunication::SBCommunication (broadcaster_name=\"%s\") => " -                "SBCommunication(%p)", -                broadcaster_name, static_cast<void *>(m_opaque)); +  LLDB_RECORD_CONSTRUCTOR(SBCommunication, (const char *), broadcaster_name);  }  SBCommunication::~SBCommunication() {    if (m_opaque && m_opaque_owned)      delete m_opaque; -  m_opaque = NULL; +  m_opaque = nullptr;    m_opaque_owned = false;  } -bool SBCommunication::IsValid() const { return m_opaque != NULL; } +bool SBCommunication::IsValid() const { +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBCommunication, IsValid); +  return this->operator bool(); +} +SBCommunication::operator bool() const { +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBCommunication, operator bool); + +  return m_opaque != nullptr; +}  bool SBCommunication::GetCloseOnEOF() { +  LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommunication, GetCloseOnEOF); +    if (m_opaque)      return m_opaque->GetCloseOnEOF();    return false;  }  void SBCommunication::SetCloseOnEOF(bool b) { +  LLDB_RECORD_METHOD(void, SBCommunication, SetCloseOnEOF, (bool), b); +    if (m_opaque)      m_opaque->SetCloseOnEOF(b);  }  ConnectionStatus SBCommunication::Connect(const char *url) { +  LLDB_RECORD_METHOD(lldb::ConnectionStatus, SBCommunication, Connect, +                     (const char *), url); +    if (m_opaque) {      if (!m_opaque->HasConnection())        m_opaque->SetConnection(Host::CreateDefaultConnection(url).release()); -    return m_opaque->Connect(url, NULL); +    return m_opaque->Connect(url, nullptr);    }    return eConnectionStatusNoConnection;  }  ConnectionStatus SBCommunication::AdoptFileDesriptor(int fd, bool owns_fd) { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_METHOD(lldb::ConnectionStatus, SBCommunication, +                     AdoptFileDesriptor, (int, bool), fd, owns_fd);    ConnectionStatus status = eConnectionStatusNoConnection;    if (m_opaque) { @@ -73,183 +85,131 @@ ConnectionStatus SBCommunication::AdoptFileDesriptor(int fd, bool owns_fd) {      else        status = eConnectionStatusLostConnection;    } - -  if (log) -    log->Printf( -        "SBCommunication(%p)::AdoptFileDescriptor (fd=%d, ownd_fd=%i) => %s", -        static_cast<void *>(m_opaque), fd, owns_fd, -        Communication::ConnectionStatusAsCString(status)); -    return status;  }  ConnectionStatus SBCommunication::Disconnect() { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_METHOD_NO_ARGS(lldb::ConnectionStatus, SBCommunication, +                             Disconnect);    ConnectionStatus status = eConnectionStatusNoConnection;    if (m_opaque)      status = m_opaque->Disconnect(); - -  if (log) -    log->Printf("SBCommunication(%p)::Disconnect () => %s", -                static_cast<void *>(m_opaque), -                Communication::ConnectionStatusAsCString(status)); -    return status;  }  bool SBCommunication::IsConnected() const { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); -  bool result = false; -  if (m_opaque) -    result = m_opaque->IsConnected(); +  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBCommunication, IsConnected); -  if (log) -    log->Printf("SBCommunication(%p)::IsConnected () => %i", -                static_cast<void *>(m_opaque), result); - -  return false; +  return m_opaque ? m_opaque->IsConnected() : false;  }  size_t SBCommunication::Read(void *dst, size_t dst_len, uint32_t timeout_usec,                               ConnectionStatus &status) { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); -  if (log) -    log->Printf("SBCommunication(%p)::Read (dst=%p, dst_len=%" PRIu64 -                ", timeout_usec=%u, &status)...", -                static_cast<void *>(m_opaque), static_cast<void *>(dst), -                static_cast<uint64_t>(dst_len), timeout_usec); +  LLDB_RECORD_DUMMY(size_t, SBCommunication, Read, +                    (void *, size_t, uint32_t, lldb::ConnectionStatus &), dst, +                    dst_len, timeout_usec, status); +    size_t bytes_read = 0;    Timeout<std::micro> timeout = timeout_usec == UINT32_MAX                                      ? Timeout<std::micro>(llvm::None)                                      : std::chrono::microseconds(timeout_usec);    if (m_opaque) -    bytes_read = m_opaque->Read(dst, dst_len, timeout, status, NULL); +    bytes_read = m_opaque->Read(dst, dst_len, timeout, status, nullptr);    else      status = eConnectionStatusNoConnection; -  if (log) -    log->Printf("SBCommunication(%p)::Read (dst=%p, dst_len=%" PRIu64 -                ", timeout_usec=%u, &status=%s) => %" PRIu64, -                static_cast<void *>(m_opaque), static_cast<void *>(dst), -                static_cast<uint64_t>(dst_len), timeout_usec, -                Communication::ConnectionStatusAsCString(status), -                static_cast<uint64_t>(bytes_read));    return bytes_read;  }  size_t SBCommunication::Write(const void *src, size_t src_len,                                ConnectionStatus &status) { +  LLDB_RECORD_DUMMY(size_t, SBCommunication, Write, +                    (const void *, size_t, lldb::ConnectionStatus &), src, +                    src_len, status); +    size_t bytes_written = 0;    if (m_opaque) -    bytes_written = m_opaque->Write(src, src_len, status, NULL); +    bytes_written = m_opaque->Write(src, src_len, status, nullptr);    else      status = eConnectionStatusNoConnection; -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); -  if (log) -    log->Printf("SBCommunication(%p)::Write (src=%p, src_len=%" PRIu64 -                ", &status=%s) => %" PRIu64, -                static_cast<void *>(m_opaque), static_cast<const void *>(src), -                static_cast<uint64_t>(src_len), -                Communication::ConnectionStatusAsCString(status), -                static_cast<uint64_t>(bytes_written)); - -  return 0; +  return bytes_written;  }  bool SBCommunication::ReadThreadStart() { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - -  bool success = false; -  if (m_opaque) -    success = m_opaque->StartReadThread(); - -  if (log) -    log->Printf("SBCommunication(%p)::ReadThreadStart () => %i", -                static_cast<void *>(m_opaque), success); +  LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommunication, ReadThreadStart); -  return success; +  return m_opaque ? m_opaque->StartReadThread() : false;  }  bool SBCommunication::ReadThreadStop() { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); -  if (log) -    log->Printf("SBCommunication(%p)::ReadThreadStop ()...", -                static_cast<void *>(m_opaque)); +  LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommunication, ReadThreadStop); -  bool success = false; -  if (m_opaque) -    success = m_opaque->StopReadThread(); - -  if (log) -    log->Printf("SBCommunication(%p)::ReadThreadStop () => %i", -                static_cast<void *>(m_opaque), success); - -  return success; +  return m_opaque ? m_opaque->StopReadThread() : false;  }  bool SBCommunication::ReadThreadIsRunning() { -  bool result = false; -  if (m_opaque) -    result = m_opaque->ReadThreadIsRunning(); -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); -  if (log) -    log->Printf("SBCommunication(%p)::ReadThreadIsRunning () => %i", -                static_cast<void *>(m_opaque), result); -  return result; +  LLDB_RECORD_METHOD_NO_ARGS(bool, SBCommunication, ReadThreadIsRunning); + +  return m_opaque ? m_opaque->ReadThreadIsRunning() : false;  }  bool SBCommunication::SetReadThreadBytesReceivedCallback(      ReadThreadBytesReceived callback, void *callback_baton) { -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_DUMMY(bool, SBCommunication, SetReadThreadBytesReceivedCallback, +                    (lldb::SBCommunication::ReadThreadBytesReceived, void *), +                    callback, callback_baton);    bool result = false;    if (m_opaque) {      m_opaque->SetReadThreadBytesReceivedCallback(callback, callback_baton);      result = true;    } - -  if (log) -    log->Printf("SBCommunication(%p)::SetReadThreadBytesReceivedCallback " -                "(callback=%p, baton=%p) => %i", -                static_cast<void *>(m_opaque), -                reinterpret_cast<void *>(reinterpret_cast<intptr_t>(callback)), -                static_cast<void *>(callback_baton), result); -    return result;  }  SBBroadcaster SBCommunication::GetBroadcaster() { -  SBBroadcaster broadcaster(m_opaque, false); - -  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); +  LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBroadcaster, SBCommunication, +                             GetBroadcaster); -  if (log) -    log->Printf("SBCommunication(%p)::GetBroadcaster () => SBBroadcaster (%p)", -                static_cast<void *>(m_opaque), -                static_cast<void *>(broadcaster.get())); - -  return broadcaster; +  SBBroadcaster broadcaster(m_opaque, false); +  return LLDB_RECORD_RESULT(broadcaster);  }  const char *SBCommunication::GetBroadcasterClass() { +  LLDB_RECORD_STATIC_METHOD_NO_ARGS(const char *, SBCommunication, +                                    GetBroadcasterClass); +    return Communication::GetStaticBroadcasterClass().AsCString();  } -// -// void -// SBCommunication::CreateIfNeeded () -//{ -//    if (m_opaque == NULL) -//    { -//        static uint32_t g_broadcaster_num; -//        char broadcaster_name[256]; -//        ::snprintf (name, broadcaster_name, "%p SBCommunication", this); -//        m_opaque = new Communication (broadcaster_name); -//        m_opaque_owned = true; -//    } -//    assert (m_opaque); -//} -// -// +namespace lldb_private { +namespace repro { + +template <> +void RegisterMethods<SBCommunication>(Registry &R) { +  LLDB_REGISTER_CONSTRUCTOR(SBCommunication, ()); +  LLDB_REGISTER_CONSTRUCTOR(SBCommunication, (const char *)); +  LLDB_REGISTER_METHOD_CONST(bool, SBCommunication, IsValid, ()); +  LLDB_REGISTER_METHOD_CONST(bool, SBCommunication, operator bool, ()); +  LLDB_REGISTER_METHOD(bool, SBCommunication, GetCloseOnEOF, ()); +  LLDB_REGISTER_METHOD(void, SBCommunication, SetCloseOnEOF, (bool)); +  LLDB_REGISTER_METHOD(lldb::ConnectionStatus, SBCommunication, Connect, +                       (const char *)); +  LLDB_REGISTER_METHOD(lldb::ConnectionStatus, SBCommunication, +                       AdoptFileDesriptor, (int, bool)); +  LLDB_REGISTER_METHOD(lldb::ConnectionStatus, SBCommunication, Disconnect, +                       ()); +  LLDB_REGISTER_METHOD_CONST(bool, SBCommunication, IsConnected, ()); +  LLDB_REGISTER_METHOD(bool, SBCommunication, ReadThreadStart, ()); +  LLDB_REGISTER_METHOD(bool, SBCommunication, ReadThreadStop, ()); +  LLDB_REGISTER_METHOD(bool, SBCommunication, ReadThreadIsRunning, ()); +  LLDB_REGISTER_METHOD(lldb::SBBroadcaster, SBCommunication, GetBroadcaster, +                       ()); +  LLDB_REGISTER_STATIC_METHOD(const char *, SBCommunication, +                              GetBroadcasterClass, ()); +} + +} +}  | 
