diff options
Diffstat (limited to 'file.hpp')
-rw-r--r-- | file.hpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/file.hpp b/file.hpp new file mode 100644 index 0000000..9ba4cbb --- /dev/null +++ b/file.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include <unistd.h> +namespace phosphor +{ +namespace gpio +{ +/** @class FileDescriptor + * @brief Responsible for handling file descriptor + */ +class FileDescriptor +{ + private: + /** @brief File descriptor for the gpio input device */ + int fd = -1; + + public: + FileDescriptor() = delete; + FileDescriptor(const FileDescriptor&) = delete; + FileDescriptor& operator=(const FileDescriptor&) = delete; + FileDescriptor(FileDescriptor&&) = delete; + FileDescriptor& operator=(FileDescriptor&&) = delete; + + /** @brief Saves File descriptor and uses it to do file operation + * + * @param[in] fd - File descriptor + */ + FileDescriptor(int fd) : fd(fd) + { + // Nothing + } + + ~FileDescriptor() + { + if (fd >=0) + { + close(fd); + } + } + + int operator()() + { + return fd; + } +}; + +} // namespace gpio +} // namespace phosphor |