1111f691c6
Co-authored-by: n.fedorov <mail@nfedorov.dev> Co-committed-by: n.fedorov <mail@nfedorov.dev>
30 lines
498 B
C++
30 lines
498 B
C++
#pragma once
|
|
#include <unistd.h>
|
|
|
|
struct Socket {
|
|
int fd = -1;
|
|
|
|
Socket() = default;
|
|
explicit Socket(int fd) : fd(fd) {}
|
|
~Socket() {
|
|
if (fd >= 0)
|
|
close(fd);
|
|
}
|
|
|
|
Socket(const Socket&) = delete;
|
|
Socket& operator=(const Socket&) = delete;
|
|
Socket(Socket&& o) : fd(o.fd) {
|
|
o.fd = -1;
|
|
}
|
|
|
|
operator int() const {
|
|
return fd;
|
|
}
|
|
bool valid() const {
|
|
return fd >= 0;
|
|
}
|
|
void release() {
|
|
fd = -1;
|
|
}
|
|
};
|