uvw 2.12.1
Loading...
Searching...
No Matches
pipe.h
1#ifndef UVW_PIPE_INCLUDE_H
2#define UVW_PIPE_INCLUDE_H
3
4#include <memory>
5#include <string>
6#include <type_traits>
7#include <uv.h>
8#include "loop.h"
9#include "request.hpp"
10#include "stream.h"
11#include "util.h"
12
13namespace uvw {
14
15namespace details {
16
17enum class UVChmodFlags : std::underlying_type_t<uv_poll_event> {
18 READABLE = UV_READABLE,
19 WRITABLE = UV_WRITABLE
20};
21
22}
23
35class PipeHandle final: public StreamHandle<PipeHandle, uv_pipe_t> {
36public:
37 using Chmod = details::UVChmodFlags;
38
39 explicit PipeHandle(ConstructorAccess ca, std::shared_ptr<Loop> ref, bool pass = false);
40
45 bool init();
46
56 void open(FileHandle file);
57
66 void bind(const std::string &name);
67
78 void connect(const std::string &name);
79
85 std::string sock() const noexcept;
86
93 std::string peer() const noexcept;
94
104 void pending(int count) noexcept;
105
110 int pending() noexcept;
111
128 HandleType receive() noexcept;
129
147 bool chmod(Flags<Chmod> flags) noexcept;
148
149private:
150 bool ipc;
151};
152
153} // namespace uvw
154
155#ifndef UVW_AS_LIB
156# include "pipe.cpp"
157#endif
158
159#endif // UVW_PIPE_INCLUDE_H
Utility class to handle flags.
Definition util.h:80
bool chmod(Flags< Chmod > flags) noexcept
Alters pipe permissions.
void open(FileHandle file)
Opens an existing file descriptor or HANDLE as a pipe.
bool init()
Initializes the handle.
std::string sock() const noexcept
Gets the name of the Unix domain socket or the named pipe.
HandleType receive() noexcept
Used to receive handles over IPC pipes.
void connect(const std::string &name)
Connects to the Unix domain socket or the named pipe.
void bind(const std::string &name)
bind Binds the pipe to a file path (Unix) or a name (Windows).
std::string peer() const noexcept
Gets the name of the Unix domain socket or the named pipe to which the handle is connected.
void pending(int count) noexcept
Sets the number of pending pipe this instance can handle.
The StreamHandle handle.
Definition stream.h:113
uvw default namespace.
Definition async.h:8
details::UVHandleType HandleType
Definition util.h:202
details::UVTypeWrapper< uv_file > FileHandle
Definition util.h:205