1 #include <boost/beast/core/file_posix.hpp>
2 
3 struct DuplicatableFileHandle
4 {
5     boost::beast::file_posix fileHandle;
6 
7     DuplicatableFileHandle() = default;
8     DuplicatableFileHandle(DuplicatableFileHandle&&) noexcept = default;
9     // Overload copy constructor, because posix doesn't have dup(), but linux
10     // does
11     DuplicatableFileHandle(const DuplicatableFileHandle& other)
12     {
13         fileHandle.native_handle(dup(other.fileHandle.native_handle()));
14     }
15     DuplicatableFileHandle& operator=(const DuplicatableFileHandle& other)
16     {
17         if (this == &other)
18         {
19             return *this;
20         }
21         fileHandle.native_handle(dup(other.fileHandle.native_handle()));
22         return *this;
23     }
24     DuplicatableFileHandle&
25         operator=(DuplicatableFileHandle&& other) noexcept = default;
26     ~DuplicatableFileHandle() = default;
27 };
28