1 #pragma once 2 3 #include <unistd.h> 4 namespace open_power 5 { 6 namespace occ 7 { 8 /** @class FileDescriptor 9 * @brief Responsible for handling file descriptor 10 */ 11 class FileDescriptor 12 { 13 private: 14 /** @brief File descriptor for the gpio input device */ 15 int fd = -1; 16 17 public: 18 FileDescriptor() = delete; 19 FileDescriptor(const FileDescriptor&) = delete; 20 FileDescriptor& operator=(const FileDescriptor&) = delete; 21 FileDescriptor(FileDescriptor&&) = delete; 22 FileDescriptor& operator=(FileDescriptor&&) = delete; 23 24 /** @brief Saves File descriptor and uses it to do file operation 25 * 26 * @param[in] fd - File descriptor 27 */ 28 explicit FileDescriptor(int fd) : fd(fd) 29 { 30 // Nothing 31 } 32 33 ~FileDescriptor() 34 { 35 if (fd >= 0) 36 { 37 close(fd); 38 } 39 } 40 41 int operator()() 42 { 43 return fd; 44 } 45 }; 46 47 } // namespace occ 48 } // namespace open_power 49