mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 11:20:04 +02:00
more like UdpRxSocket
This commit is contained in:
parent
8afa11ed33
commit
68f76e5356
@ -21,7 +21,7 @@ class DataSocket {
|
|||||||
//No copy since the class manage the underlying socket
|
//No copy since the class manage the underlying socket
|
||||||
DataSocket(const DataSocket &) = delete;
|
DataSocket(const DataSocket &) = delete;
|
||||||
DataSocket &operator=(DataSocket const &) = delete;
|
DataSocket &operator=(DataSocket const &) = delete;
|
||||||
int getSocketId() const { return socketId_; }
|
int getSocketId() const { return sockfd_; }
|
||||||
|
|
||||||
|
|
||||||
int Send(const void *buffer, size_t size);
|
int Send(const void *buffer, size_t size);
|
||||||
@ -51,9 +51,10 @@ class DataSocket {
|
|||||||
int setReceiveTimeout(int us);
|
int setReceiveTimeout(int us);
|
||||||
void close();
|
void close();
|
||||||
void shutDownSocket();
|
void shutDownSocket();
|
||||||
|
void shutdown();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int socketId_ = -1;
|
int sockfd_ = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
}; // namespace sls
|
}; // namespace sls
|
||||||
|
@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
namespace sls {
|
namespace sls {
|
||||||
|
|
||||||
DataSocket::DataSocket(int socketId) : socketId_(socketId) {
|
DataSocket::DataSocket(int socketId) : sockfd_(socketId) {
|
||||||
int value = 1;
|
int value = 1;
|
||||||
setsockopt(socketId_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
|
setsockopt(sockfd_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
DataSocket::~DataSocket() {
|
DataSocket::~DataSocket() {
|
||||||
if (socketId_ <= 0) {
|
if (sockfd_ <= 0) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@ -32,7 +32,7 @@ DataSocket::~DataSocket() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DataSocket::swap(DataSocket &other) noexcept {
|
void DataSocket::swap(DataSocket &other) noexcept {
|
||||||
std::swap(socketId_, other.socketId_);
|
std::swap(sockfd_, other.sockfd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
DataSocket::DataSocket(DataSocket &&move) noexcept { move.swap(*this); }
|
DataSocket::DataSocket(DataSocket &&move) noexcept { move.swap(*this); }
|
||||||
@ -121,19 +121,23 @@ int DataSocket::setTimeOut(int t_seconds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DataSocket::close() {
|
void DataSocket::close() {
|
||||||
if (socketId_ > 0) {
|
if (sockfd_ > 0) {
|
||||||
if (::close(socketId_)) {
|
if (::close(sockfd_)) {
|
||||||
throw SocketError("could not close socket");
|
throw SocketError("could not close socket");
|
||||||
}
|
}
|
||||||
socketId_ = -1;
|
sockfd_ = -1;
|
||||||
} else {
|
} else {
|
||||||
throw std::runtime_error("Socket ERROR: close called on bad socket\n");
|
throw std::runtime_error("Socket ERROR: close called on bad socket\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataSocket::shutDownSocket() {
|
void DataSocket::shutDownSocket() {
|
||||||
shutdown(getSocketId(), SHUT_RDWR);
|
::shutdown(getSocketId(), SHUT_RDWR);
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataSocket::shutdown(){
|
||||||
|
::shutdown(sockfd_, SHUT_RDWR);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace sls
|
} // namespace sls
|
||||||
|
Loading…
x
Reference in New Issue
Block a user