138b08d79SVishwanatha Subbanna #pragma once 238b08d79SVishwanatha Subbanna 338b08d79SVishwanatha Subbanna #include <unistd.h> 438b08d79SVishwanatha Subbanna namespace open_power 538b08d79SVishwanatha Subbanna { 638b08d79SVishwanatha Subbanna namespace occ 738b08d79SVishwanatha Subbanna { 838b08d79SVishwanatha Subbanna /** @class FileDescriptor 938b08d79SVishwanatha Subbanna * @brief Responsible for handling file descriptor 1038b08d79SVishwanatha Subbanna */ 1138b08d79SVishwanatha Subbanna class FileDescriptor 1238b08d79SVishwanatha Subbanna { 1338b08d79SVishwanatha Subbanna private: 1438b08d79SVishwanatha Subbanna /** @brief File descriptor for the gpio input device */ 1538b08d79SVishwanatha Subbanna int fd = -1; 1638b08d79SVishwanatha Subbanna 1738b08d79SVishwanatha Subbanna public: 1838b08d79SVishwanatha Subbanna FileDescriptor() = delete; 1938b08d79SVishwanatha Subbanna FileDescriptor(const FileDescriptor&) = delete; 2038b08d79SVishwanatha Subbanna FileDescriptor& operator=(const FileDescriptor&) = delete; 2138b08d79SVishwanatha Subbanna FileDescriptor(FileDescriptor&&) = delete; 2238b08d79SVishwanatha Subbanna FileDescriptor& operator=(FileDescriptor&&) = delete; 2338b08d79SVishwanatha Subbanna 2438b08d79SVishwanatha Subbanna /** @brief Saves File descriptor and uses it to do file operation 2538b08d79SVishwanatha Subbanna * 2638b08d79SVishwanatha Subbanna * @param[in] fd - File descriptor 2738b08d79SVishwanatha Subbanna */ FileDescriptor(int fd)28*f3a4a69fSGeorge Liu explicit FileDescriptor(int fd) : fd(fd) 2938b08d79SVishwanatha Subbanna { 3038b08d79SVishwanatha Subbanna // Nothing 3138b08d79SVishwanatha Subbanna } 3238b08d79SVishwanatha Subbanna ~FileDescriptor()3338b08d79SVishwanatha Subbanna ~FileDescriptor() 3438b08d79SVishwanatha Subbanna { 3538b08d79SVishwanatha Subbanna if (fd >= 0) 3638b08d79SVishwanatha Subbanna { 3738b08d79SVishwanatha Subbanna close(fd); 3838b08d79SVishwanatha Subbanna } 3938b08d79SVishwanatha Subbanna } 4038b08d79SVishwanatha Subbanna operator ()()4138b08d79SVishwanatha Subbanna int operator()() 4238b08d79SVishwanatha Subbanna { 4338b08d79SVishwanatha Subbanna return fd; 4438b08d79SVishwanatha Subbanna } 4538b08d79SVishwanatha Subbanna }; 4638b08d79SVishwanatha Subbanna 4738b08d79SVishwanatha Subbanna } // namespace occ 4894df8c90SGunnar Mills } // namespace open_power 49