From 08688972ae56b474e2e2fd954c5caaeb1233a1be Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 15 Jun 2025 13:59:30 +0800 Subject: init: server --- src/misc/FileDescriptor.hpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/misc/FileDescriptor.hpp (limited to 'src/misc/FileDescriptor.hpp') diff --git a/src/misc/FileDescriptor.hpp b/src/misc/FileDescriptor.hpp new file mode 100644 index 0000000..75aeb73 --- /dev/null +++ b/src/misc/FileDescriptor.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include +class CFileDescriptor { + public: + CFileDescriptor() = default; + explicit CFileDescriptor(int const fd); + CFileDescriptor(CFileDescriptor &&) noexcept; + CFileDescriptor &operator=(CFileDescriptor &&) noexcept; + ~CFileDescriptor(); + + CFileDescriptor(const CFileDescriptor &) = delete; + CFileDescriptor &operator=(const CFileDescriptor &) = delete; + + bool operator==(const CFileDescriptor &rhs) const { + return m_fd == rhs.m_fd; + } + + bool isValid() const; + int get() const; + int getFlags() const; + bool setFlags(int flags); + int take(); + void reset(); + CFileDescriptor duplicate(int flags = F_DUPFD_CLOEXEC) const; + + bool isReadable() const; + bool isClosed() const; + + static bool isReadable(int fd); + static bool isClosed(int fd); + + private: + int m_fd = -1; +}; -- cgit v1.2.3