1 #pragma once 2 3 namespace phosphor 4 { 5 namespace dump 6 { 7 8 /** @struct CustomFd 9 * 10 * RAII wrapper for file descriptor. 11 */ 12 struct CustomFd 13 { 14 private: 15 /** @brief File descriptor */ 16 int fd = -1; 17 18 public: 19 CustomFd() = delete; 20 CustomFd(const CustomFd&) = delete; 21 CustomFd& operator=(const CustomFd&) = delete; 22 CustomFd(CustomFd&&) = delete; 23 CustomFd& operator=(CustomFd&&) = delete; 24 25 /** @brief Saves File descriptor and uses it to do file operation 26 * 27 * @param[in] fd - File descriptor 28 */ 29 CustomFd(int fd) : fd(fd) {} 30 31 ~CustomFd() 32 { 33 if (fd >= 0) 34 { 35 close(fd); 36 } 37 } 38 39 int operator()() const 40 { 41 return fd; 42 } 43 }; 44 45 } // namespace dump 46 } // namespace phosphor 47