Files
clang-p2996/lldb/tools/lldb-server/Acceptor.h
Pavel Labath 4ccd99541b 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
2017-06-27 10:33:14 +00:00

62 lines
1.6 KiB
C++

//===-- Acceptor.h ----------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef lldb_server_Acceptor_h_
#define lldb_server_Acceptor_h_
#include "lldb/Host/Socket.h"
#include "lldb/Utility/Connection.h"
#include "lldb/Utility/Status.h"
#include <functional>
#include <memory>
#include <string>
namespace llvm {
class StringRef;
}
namespace lldb_private {
namespace lldb_server {
class Acceptor {
public:
virtual ~Acceptor() = default;
Status Listen(int backlog);
Status Accept(const bool child_processes_inherit, Connection *&conn);
static std::unique_ptr<Acceptor> Create(llvm::StringRef name,
const bool child_processes_inherit,
Status &error);
Socket::SocketProtocol GetSocketProtocol() const;
const char *GetSocketScheme() const;
// Returns either TCP port number as string or domain socket path.
// Empty string is returned in case of error.
std::string GetLocalSocketId() const;
private:
typedef std::function<std::string()> LocalSocketIdFunc;
Acceptor(std::unique_ptr<Socket> &&listener_socket, llvm::StringRef name,
const LocalSocketIdFunc &local_socket_id);
const std::unique_ptr<Socket> m_listener_socket_up;
const std::string m_name;
const LocalSocketIdFunc m_local_socket_id;
};
} // namespace lldb_server
} // namespace lldb_private
#endif // lldb_server_Acceptor_h_