summaryrefslogtreecommitdiffstats
path: root/file.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'file.hpp')
-rw-r--r--file.hpp48
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
OpenPOWER on IntegriCloud