more like UdpRxSocket

This commit is contained in:
Erik Frojdh 2020-04-20 17:24:53 +02:00
parent 8afa11ed33
commit 68f76e5356
2 changed files with 15 additions and 10 deletions

View File

@ -21,7 +21,7 @@ class DataSocket {
//No copy since the class manage the underlying socket
DataSocket(const DataSocket &) = delete;
DataSocket &operator=(DataSocket const &) = delete;
int getSocketId() const { return socketId_; }
int getSocketId() const { return sockfd_; }
int Send(const void *buffer, size_t size);
@ -51,9 +51,10 @@ class DataSocket {
int setReceiveTimeout(int us);
void close();
void shutDownSocket();
void shutdown();
private:
int socketId_ = -1;
int sockfd_ = -1;
};
}; // namespace sls

View File

@ -15,13 +15,13 @@
namespace sls {
DataSocket::DataSocket(int socketId) : socketId_(socketId) {
DataSocket::DataSocket(int socketId) : sockfd_(socketId) {
int value = 1;
setsockopt(socketId_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
setsockopt(sockfd_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
}
DataSocket::~DataSocket() {
if (socketId_ <= 0) {
if (sockfd_ <= 0) {
return;
} else {
try {
@ -32,7 +32,7 @@ DataSocket::~DataSocket() {
}
void DataSocket::swap(DataSocket &other) noexcept {
std::swap(socketId_, other.socketId_);
std::swap(sockfd_, other.sockfd_);
}
DataSocket::DataSocket(DataSocket &&move) noexcept { move.swap(*this); }
@ -121,19 +121,23 @@ int DataSocket::setTimeOut(int t_seconds) {
}
void DataSocket::close() {
if (socketId_ > 0) {
if (::close(socketId_)) {
if (sockfd_ > 0) {
if (::close(sockfd_)) {
throw SocketError("could not close socket");
}
socketId_ = -1;
sockfd_ = -1;
} else {
throw std::runtime_error("Socket ERROR: close called on bad socket\n");
}
}
void DataSocket::shutDownSocket() {
shutdown(getSocketId(), SHUT_RDWR);
::shutdown(getSocketId(), SHUT_RDWR);
close();
}
void DataSocket::shutdown(){
::shutdown(sockfd_, SHUT_RDWR);
}
} // namespace sls