1292932Sdim//===-- DomainSocket.h ------------------------------------------*- C++ -*-===//
2292932Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6292932Sdim//
7292932Sdim//===----------------------------------------------------------------------===//
8292932Sdim
9292932Sdim#ifndef liblldb_DomainSocket_h_
10292932Sdim#define liblldb_DomainSocket_h_
11292932Sdim
12292932Sdim#include "lldb/Host/Socket.h"
13292932Sdim
14314564Sdimnamespace lldb_private {
15314564Sdimclass DomainSocket : public Socket {
16314564Sdimpublic:
17321369Sdim  DomainSocket(bool should_close, bool child_processes_inherit);
18292932Sdim
19321369Sdim  Status Connect(llvm::StringRef name) override;
20321369Sdim  Status Listen(llvm::StringRef name, int backlog) override;
21321369Sdim  Status Accept(Socket *&socket) override;
22292932Sdim
23353358Sdim  std::string GetRemoteConnectionURI() const override;
24353358Sdim
25314564Sdimprotected:
26321369Sdim  DomainSocket(SocketProtocol protocol, bool child_processes_inherit);
27292932Sdim
28314564Sdim  virtual size_t GetNameOffset() const;
29314564Sdim  virtual void DeleteSocketFile(llvm::StringRef name);
30353358Sdim  std::string GetSocketName() const;
31292932Sdim
32314564Sdimprivate:
33321369Sdim  DomainSocket(NativeSocket socket, const DomainSocket &listen_socket);
34314564Sdim};
35292932Sdim}
36292932Sdim
37292932Sdim#endif // ifndef liblldb_DomainSocket_h_
38