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
62 lines
1.6 KiB
C++
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_
|