LIPH's C++ Codes
descriptor.h
Go to the documentation of this file.
1#ifndef LIPH_IO_DESCRIPTOR_H_
2#define LIPH_IO_DESCRIPTOR_H_
3
4#include <unistd.h>
5
6namespace liph::io {
7
9
11public:
12 static constexpr int invalid = -1;
13
14public:
16
17 virtual ~descriptor() {
18 if (operator bool()) ::close(fd_);
19 }
20
21 int fd() const { return fd_; }
22
23 descriptor_type type() const { return type_; }
24
25 operator bool() const { return fd_ != invalid; };
26
27 ssize_t read(void *buf, size_t nbytes) { return ::read(fd_, buf, nbytes); }
28
29 ssize_t write(const void *buf, size_t nbytes) { return ::write(fd_, buf, nbytes); }
30
31protected:
32 int fd_;
34};
35
36} // namespace liph::io
37
38#endif // LIPH_IO_DESCRIPTOR_H_
Definition: descriptor.h:10
descriptor_type type_
Definition: descriptor.h:33
virtual ~descriptor()
Definition: descriptor.h:17
int fd() const
Definition: descriptor.h:21
descriptor_type type() const
Definition: descriptor.h:23
static constexpr int invalid
Definition: descriptor.h:12
ssize_t read(void *buf, size_t nbytes)
Definition: descriptor.h:27
ssize_t write(const void *buf, size_t nbytes)
Definition: descriptor.h:29
int fd_
Definition: descriptor.h:32
descriptor(int fd=invalid, descriptor_type type=descriptor_type::none)
Definition: descriptor.h:15
Definition: descriptor.h:6
descriptor_type
Definition: descriptor.h:8