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