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_
#define liblldb_File_h_
#include "lldb/Host/IOObject.h"
#include "lldb/Host/PosixApi.h"
#include "lldb/Utility/IOObject.h"
#include "lldb/Utility/Status.h"
#include "lldb/lldb-private.h"

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
#ifndef 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/lldb-types.h"

View File

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

View File

@ -32,7 +32,7 @@ public:
IOObject(FDType type, bool 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 Write(const void *buf, size_t &num_bytes) = 0;
@ -51,6 +51,6 @@ protected:
private:
DISALLOW_COPY_AND_ASSIGN(IOObject);
};
}
} // namespace lldb_private
#endif

View File

@ -11,6 +11,7 @@
#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;
@ -51,7 +52,7 @@ void SBCommunication::SetCloseOnEOF(bool b) {
ConnectionStatus SBCommunication::Connect(const char *url) {
if (m_opaque) {
if (!m_opaque->HasConnection())
m_opaque->SetConnection(Connection::CreateDefaultConnection(url));
m_opaque->SetConnection(Host::CreateDefaultConnection(url).release());
return m_opaque->Connect(url, NULL);
}
return eConnectionStatusNoConnection;

View File

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

View File

@ -9,11 +9,11 @@
#include "lldb/Core/Communication.h"
#include "lldb/Core/Connection.h"
#include "lldb/Core/Event.h"
#include "lldb/Core/Listener.h"
#include "lldb/Host/HostThread.h"
#include "lldb/Host/ThreadLauncher.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/ConstString.h" // for ConstString
#include "lldb/Utility/Log.h"
#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/HostProcess.cpp
common/HostThread.cpp
common/IOObject.cpp
common/LockFileBase.cpp
common/MainLoop.cpp
common/MonitoringProcessLauncher.cpp

View File

@ -58,6 +58,7 @@
#include "lldb/Host/Predicate.h"
#include "lldb/Host/ProcessLauncher.h"
#include "lldb/Host/ThreadLauncher.h"
#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h"
#include "lldb/Target/FileAction.h"
#include "lldb/Target/ProcessLaunchInfo.h"
#include "lldb/Target/UnixSignals.h"
@ -73,6 +74,7 @@
#include "llvm/Support/FileSystem.h"
#if defined(_WIN32)
#include "lldb/Host/windows/ConnectionGenericFileWindows.h"
#include "lldb/Host/windows/ProcessLauncherWindows.h"
#else
#include "lldb/Host/posix/ProcessLauncherPosixFork.h"
@ -624,6 +626,14 @@ const UnixSignalsSP &Host::GetUnixSignals() {
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)
WaitStatus WaitStatus::Decode(int wstatus) {
if (WIFEXITED(wstatus))

View File

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

View File

@ -1,5 +1,6 @@
add_lldb_library(lldbUtility
Baton.cpp
Connection.cpp
ConstString.cpp
DataBufferHeap.cpp
DataBufferLLVM.cpp
@ -8,6 +9,7 @@ add_lldb_library(lldbUtility
FastDemangle.cpp
FileSpec.cpp
History.cpp
IOObject.cpp
JSON.cpp
LLDBAssert.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;
const IOObject::WaitableHandle IOObject::kInvalidHandleValue = -1;
IOObject::~IOObject() = default;

View File

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