Skip to content

Commit

Permalink
Move Connection and IOObject interfaces to Utility module
Browse files Browse the repository at this point in the history
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
  • Loading branch information
labath committed Jun 27, 2017
1 parent 0e74a13 commit 4ccd995
Show file tree
Hide file tree
Showing 19 changed files with 48 additions and 56 deletions.
2 changes: 1 addition & 1 deletion lldb/include/lldb/Host/File.h
Expand Up @@ -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"

Expand Down
3 changes: 3 additions & 0 deletions lldb/include/lldb/Host/Host.h
Expand Up @@ -238,6 +238,9 @@ class Host {
uint32_t line_no);

static size_t GetEnvironment(StringList &env);

static std::unique_ptr<Connection>
CreateDefaultConnection(llvm::StringRef url);
};

} // namespace lldb_private
Expand Down
8 changes: 3 additions & 5 deletions lldb/include/lldb/Host/MainLoopBase.h
Expand Up @@ -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 {

Expand Down
2 changes: 1 addition & 1 deletion lldb/include/lldb/Host/Socket.h
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions lldb/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h
Expand Up @@ -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 {

Expand Down
Expand Up @@ -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"

Expand Down
Expand Up @@ -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
Expand All @@ -48,16 +48,14 @@ class Connection {
//------------------------------------------------------------------
/// Default constructor
//------------------------------------------------------------------
Connection();
Connection() = default;

//------------------------------------------------------------------
/// Virtual destructor since this class gets subclassed and handed
/// to a Communication object.
//------------------------------------------------------------------
virtual ~Connection();

static Connection *CreateDefaultConnection(const char *url);

//------------------------------------------------------------------
/// Connect using the connect string \a url.
///
Expand Down
Expand Up @@ -32,7 +32,7 @@ class IOObject {

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;
Expand All @@ -51,6 +51,6 @@ class IOObject {
private:
DISALLOW_COPY_AND_ASSIGN(IOObject);
};
}
} // namespace lldb_private

#endif
3 changes: 2 additions & 1 deletion lldb/source/API/SBCommunication.cpp
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
1 change: 0 additions & 1 deletion lldb/source/Core/CMakeLists.txt
Expand Up @@ -7,7 +7,6 @@ add_lldb_library(lldbCore
ArchSpec.cpp
Broadcaster.cpp
Communication.cpp
Connection.cpp
Debugger.cpp
Disassembler.cpp
DumpDataExtractor.cpp
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Core/Communication.cpp
Expand Up @@ -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...
Expand Down
32 changes: 0 additions & 32 deletions lldb/source/Core/Connection.cpp

This file was deleted.

1 change: 0 additions & 1 deletion lldb/source/Host/CMakeLists.txt
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions lldb/source/Host/common/Host.cpp
Expand Up @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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))
Expand Down
3 changes: 1 addition & 2 deletions lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
Expand Up @@ -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>
Expand All @@ -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"
Expand Down
2 changes: 2 additions & 0 deletions lldb/source/Utility/CMakeLists.txt
@@ -1,5 +1,6 @@
add_lldb_library(lldbUtility
Baton.cpp
Connection.cpp
ConstString.cpp
DataBufferHeap.cpp
DataBufferLLVM.cpp
Expand All @@ -8,6 +9,7 @@ add_lldb_library(lldbUtility
FastDemangle.cpp
FileSpec.cpp
History.cpp
IOObject.cpp
JSON.cpp
LLDBAssert.cpp
Log.cpp
Expand Down
14 changes: 14 additions & 0 deletions lldb/source/Utility/Connection.cpp
@@ -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;
Expand Up @@ -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;
2 changes: 1 addition & 1 deletion lldb/tools/lldb-server/Acceptor.h
Expand Up @@ -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>
Expand Down

0 comments on commit 4ccd995

Please sign in to comment.