Move Connection and IOObject interfaces to Utility module

Summary:
These interfaces have no dependencies, so it makes sense for them to be
in the lowest level modules, to make sure that other parts of the
codebase can use them without introducing loops.

The only exception here is the Connection::CreateDefaultConnection
method, which I've moved to Host, as it instantiates concrete
implementations, and that's where the implementations live.

Reviewers: jingham, zturner

Subscribers: lldb-commits, mgorny

Differential Revision: https://reviews.llvm.org/D34400

llvm-svn: 306391
This commit is contained in:
Pavel Labath 2017-06-27 10:33:14 +00:00
parent 0e74a134f8
commit 4ccd99541b
19 changed files with 48 additions and 56 deletions

View File

@ -10,8 +10,8 @@
#ifndef liblldb_File_h_ #ifndef liblldb_File_h_
#define liblldb_File_h_ #define liblldb_File_h_
#include "lldb/Host/IOObject.h"
#include "lldb/Host/PosixApi.h" #include "lldb/Host/PosixApi.h"
#include "lldb/Utility/IOObject.h"
#include "lldb/Utility/Status.h" #include "lldb/Utility/Status.h"
#include "lldb/lldb-private.h" #include "lldb/lldb-private.h"

View File

@ -238,6 +238,9 @@ public:
uint32_t line_no); uint32_t line_no);
static size_t GetEnvironment(StringList &env); static size_t GetEnvironment(StringList &env);
static std::unique_ptr<Connection>
CreateDefaultConnection(llvm::StringRef url);
}; };
} // namespace lldb_private } // namespace lldb_private

View File

@ -10,12 +10,10 @@
#ifndef lldb_Host_posix_MainLoopBase_h_ #ifndef lldb_Host_posix_MainLoopBase_h_
#define lldb_Host_posix_MainLoopBase_h_ #define lldb_Host_posix_MainLoopBase_h_
#include <functional> #include "lldb/Utility/IOObject.h"
#include "llvm/Support/ErrorHandling.h"
#include "lldb/Host/IOObject.h"
#include "lldb/Utility/Status.h" #include "lldb/Utility/Status.h"
#include "llvm/Support/ErrorHandling.h"
#include <functional>
namespace lldb_private { namespace lldb_private {

View File

@ -15,9 +15,9 @@
#include "lldb/lldb-private.h" #include "lldb/lldb-private.h"
#include "lldb/Host/IOObject.h"
#include "lldb/Host/Predicate.h" #include "lldb/Host/Predicate.h"
#include "lldb/Host/SocketAddress.h" #include "lldb/Host/SocketAddress.h"
#include "lldb/Utility/IOObject.h"
#include "lldb/Utility/Status.h" #include "lldb/Utility/Status.h"
#ifdef _WIN32 #ifdef _WIN32

View File

@ -19,10 +19,10 @@
// Other libraries and framework includes // Other libraries and framework includes
// Project includes // Project includes
#include "lldb/Core/Connection.h"
#include "lldb/Host/IOObject.h"
#include "lldb/Host/Pipe.h" #include "lldb/Host/Pipe.h"
#include "lldb/Host/Predicate.h" #include "lldb/Host/Predicate.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/IOObject.h"
namespace lldb_private { namespace lldb_private {

View File

@ -10,7 +10,7 @@
#ifndef liblldb_Host_windows_ConnectionGenericFileWindows_h_ #ifndef liblldb_Host_windows_ConnectionGenericFileWindows_h_
#define liblldb_Host_windows_ConnectionGenericFileWindows_h_ #define liblldb_Host_windows_ConnectionGenericFileWindows_h_
#include "lldb/Core/Connection.h" #include "lldb/Host/Connection.h"
#include "lldb/Host/windows/windows.h" #include "lldb/Host/windows/windows.h"
#include "lldb/lldb-types.h" #include "lldb/lldb-types.h"

View File

@ -31,7 +31,7 @@ template <typename Ratio> class Timeout;
namespace lldb_private { namespace lldb_private {
//---------------------------------------------------------------------- //----------------------------------------------------------------------
/// @class Connection Connection.h "lldb/Core/Connection.h" /// @class Connection Connection.h "lldb/Utility/Connection.h"
/// @brief A communication connection class. /// @brief A communication connection class.
/// ///
/// A class that implements that actual communication functions for /// A class that implements that actual communication functions for
@ -48,7 +48,7 @@ public:
//------------------------------------------------------------------ //------------------------------------------------------------------
/// Default constructor /// Default constructor
//------------------------------------------------------------------ //------------------------------------------------------------------
Connection(); Connection() = default;
//------------------------------------------------------------------ //------------------------------------------------------------------
/// Virtual destructor since this class gets subclassed and handed /// Virtual destructor since this class gets subclassed and handed
@ -56,8 +56,6 @@ public:
//------------------------------------------------------------------ //------------------------------------------------------------------
virtual ~Connection(); virtual ~Connection();
static Connection *CreateDefaultConnection(const char *url);
//------------------------------------------------------------------ //------------------------------------------------------------------
/// Connect using the connect string \a url. /// Connect using the connect string \a url.
/// ///

View File

@ -32,7 +32,7 @@ public:
IOObject(FDType type, bool should_close) IOObject(FDType type, bool should_close)
: m_fd_type(type), m_should_close_fd(should_close) {} : m_fd_type(type), m_should_close_fd(should_close) {}
virtual ~IOObject() {} virtual ~IOObject();
virtual Status Read(void *buf, size_t &num_bytes) = 0; virtual Status Read(void *buf, size_t &num_bytes) = 0;
virtual Status Write(const void *buf, size_t &num_bytes) = 0; virtual Status Write(const void *buf, size_t &num_bytes) = 0;
@ -51,6 +51,6 @@ protected:
private: private:
DISALLOW_COPY_AND_ASSIGN(IOObject); DISALLOW_COPY_AND_ASSIGN(IOObject);
}; };
} } // namespace lldb_private
#endif #endif

View File

@ -11,6 +11,7 @@
#include "lldb/API/SBBroadcaster.h" #include "lldb/API/SBBroadcaster.h"
#include "lldb/Core/Communication.h" #include "lldb/Core/Communication.h"
#include "lldb/Host/ConnectionFileDescriptor.h" #include "lldb/Host/ConnectionFileDescriptor.h"
#include "lldb/Host/Host.h"
#include "lldb/Utility/Log.h" #include "lldb/Utility/Log.h"
using namespace lldb; using namespace lldb;
@ -51,7 +52,7 @@ void SBCommunication::SetCloseOnEOF(bool b) {
ConnectionStatus SBCommunication::Connect(const char *url) { ConnectionStatus SBCommunication::Connect(const char *url) {
if (m_opaque) { if (m_opaque) {
if (!m_opaque->HasConnection()) if (!m_opaque->HasConnection())
m_opaque->SetConnection(Connection::CreateDefaultConnection(url)); m_opaque->SetConnection(Host::CreateDefaultConnection(url).release());
return m_opaque->Connect(url, NULL); return m_opaque->Connect(url, NULL);
} }
return eConnectionStatusNoConnection; return eConnectionStatusNoConnection;

View File

@ -7,7 +7,6 @@ add_lldb_library(lldbCore
ArchSpec.cpp ArchSpec.cpp
Broadcaster.cpp Broadcaster.cpp
Communication.cpp Communication.cpp
Connection.cpp
Debugger.cpp Debugger.cpp
Disassembler.cpp Disassembler.cpp
DumpDataExtractor.cpp DumpDataExtractor.cpp

View File

@ -9,11 +9,11 @@
#include "lldb/Core/Communication.h" #include "lldb/Core/Communication.h"
#include "lldb/Core/Connection.h"
#include "lldb/Core/Event.h" #include "lldb/Core/Event.h"
#include "lldb/Core/Listener.h" #include "lldb/Core/Listener.h"
#include "lldb/Host/HostThread.h" #include "lldb/Host/HostThread.h"
#include "lldb/Host/ThreadLauncher.h" #include "lldb/Host/ThreadLauncher.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/ConstString.h" // for ConstString #include "lldb/Utility/ConstString.h" // for ConstString
#include "lldb/Utility/Log.h" #include "lldb/Utility/Log.h"
#include "lldb/Utility/Logging.h" // for LogIfAnyCategoriesSet, LIBLLDB... #include "lldb/Utility/Logging.h" // for LogIfAnyCategoriesSet, LIBLLDB...

View File

@ -1,32 +0,0 @@
//===-- Connection.cpp ------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "lldb/Core/Connection.h"
#if defined(_WIN32)
#include "lldb/Host/windows/ConnectionGenericFileWindows.h"
#endif
#include "lldb/Host/ConnectionFileDescriptor.h"
#include <string.h> // for strstr
using namespace lldb_private;
Connection::Connection() {}
Connection::~Connection() {}
Connection *Connection::CreateDefaultConnection(const char *url) {
#if defined(_WIN32)
if (strstr(url, "file://") == url)
return new ConnectionGenericFile();
#endif
return new ConnectionFileDescriptor();
}

View File

@ -13,7 +13,6 @@ add_host_subdirectory(common
common/HostNativeThreadBase.cpp common/HostNativeThreadBase.cpp
common/HostProcess.cpp common/HostProcess.cpp
common/HostThread.cpp common/HostThread.cpp
common/IOObject.cpp
common/LockFileBase.cpp common/LockFileBase.cpp
common/MainLoop.cpp common/MainLoop.cpp
common/MonitoringProcessLauncher.cpp common/MonitoringProcessLauncher.cpp

View File

@ -58,6 +58,7 @@
#include "lldb/Host/Predicate.h" #include "lldb/Host/Predicate.h"
#include "lldb/Host/ProcessLauncher.h" #include "lldb/Host/ProcessLauncher.h"
#include "lldb/Host/ThreadLauncher.h" #include "lldb/Host/ThreadLauncher.h"
#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h"
#include "lldb/Target/FileAction.h" #include "lldb/Target/FileAction.h"
#include "lldb/Target/ProcessLaunchInfo.h" #include "lldb/Target/ProcessLaunchInfo.h"
#include "lldb/Target/UnixSignals.h" #include "lldb/Target/UnixSignals.h"
@ -73,6 +74,7 @@
#include "llvm/Support/FileSystem.h" #include "llvm/Support/FileSystem.h"
#if defined(_WIN32) #if defined(_WIN32)
#include "lldb/Host/windows/ConnectionGenericFileWindows.h"
#include "lldb/Host/windows/ProcessLauncherWindows.h" #include "lldb/Host/windows/ProcessLauncherWindows.h"
#else #else
#include "lldb/Host/posix/ProcessLauncherPosixFork.h" #include "lldb/Host/posix/ProcessLauncherPosixFork.h"
@ -624,6 +626,14 @@ const UnixSignalsSP &Host::GetUnixSignals() {
return s_unix_signals_sp; return s_unix_signals_sp;
} }
std::unique_ptr<Connection> Host::CreateDefaultConnection(llvm::StringRef url) {
#if defined(_WIN32)
if (url.startswith("file://"))
return std::unique_ptr<Connection>(new ConnectionGenericFile());
#endif
return std::unique_ptr<Connection>(new ConnectionFileDescriptor());
}
#if defined(LLVM_ON_UNIX) #if defined(LLVM_ON_UNIX)
WaitStatus WaitStatus::Decode(int wstatus) { WaitStatus WaitStatus::Decode(int wstatus) {
if (WIFEXITED(wstatus)) if (WIFEXITED(wstatus))

View File

@ -16,10 +16,10 @@
#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h" #include "lldb/Host/posix/ConnectionFileDescriptorPosix.h"
#include "lldb/Host/Config.h" #include "lldb/Host/Config.h"
#include "lldb/Host/IOObject.h"
#include "lldb/Host/Socket.h" #include "lldb/Host/Socket.h"
#include "lldb/Host/SocketAddress.h" #include "lldb/Host/SocketAddress.h"
#include "lldb/Utility/SelectHelper.h" #include "lldb/Utility/SelectHelper.h"
#include "lldb/Utility/Timeout.h"
// C Includes // C Includes
#include <errno.h> #include <errno.h>
@ -42,7 +42,6 @@
#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/SmallVector.h"
#endif #endif
// Project includes // Project includes
#include "lldb/Core/Communication.h"
#include "lldb/Core/Timer.h" #include "lldb/Core/Timer.h"
#include "lldb/Host/Host.h" #include "lldb/Host/Host.h"
#include "lldb/Host/Socket.h" #include "lldb/Host/Socket.h"

View File

@ -1,5 +1,6 @@
add_lldb_library(lldbUtility add_lldb_library(lldbUtility
Baton.cpp Baton.cpp
Connection.cpp
ConstString.cpp ConstString.cpp
DataBufferHeap.cpp DataBufferHeap.cpp
DataBufferLLVM.cpp DataBufferLLVM.cpp
@ -8,6 +9,7 @@ add_lldb_library(lldbUtility
FastDemangle.cpp FastDemangle.cpp
FileSpec.cpp FileSpec.cpp
History.cpp History.cpp
IOObject.cpp
JSON.cpp JSON.cpp
LLDBAssert.cpp LLDBAssert.cpp
Log.cpp Log.cpp

View File

@ -0,0 +1,14 @@
//===-- Connection.cpp ------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "lldb/Utility/Connection.h"
using namespace lldb_private;
Connection::~Connection() = default;

View File

@ -7,8 +7,9 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "lldb/Host/IOObject.h" #include "lldb/Utility/IOObject.h"
using namespace lldb_private; using namespace lldb_private;
const IOObject::WaitableHandle IOObject::kInvalidHandleValue = -1; const IOObject::WaitableHandle IOObject::kInvalidHandleValue = -1;
IOObject::~IOObject() = default;

View File

@ -9,8 +9,8 @@
#ifndef lldb_server_Acceptor_h_ #ifndef lldb_server_Acceptor_h_
#define lldb_server_Acceptor_h_ #define lldb_server_Acceptor_h_
#include "lldb/Core/Connection.h"
#include "lldb/Host/Socket.h" #include "lldb/Host/Socket.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/Status.h" #include "lldb/Utility/Status.h"
#include <functional> #include <functional>