xref: /openbmc/openpower-occ-control/file.hpp (revision e2a58518)
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