From 3816fb6a532ec156cd64b7179b55b6544d8affd4 Mon Sep 17 00:00:00 2001 From: Andrea Casalino Date: Wed, 7 Aug 2024 09:51:01 +0200 Subject: [PATCH] avoid regeneration of the SocketHandler when calling shutDown --- src/header/MinimalSocket/core/Socket.h | 6 +++++- src/src/SocketHandler.cpp | 8 +++++++- src/src/SocketHandler.h | 4 +++- src/src/core/Socket.cpp | 2 ++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/header/MinimalSocket/core/Socket.h b/src/header/MinimalSocket/core/Socket.h index 218256f..06df24a 100644 --- a/src/header/MinimalSocket/core/Socket.h +++ b/src/header/MinimalSocket/core/Socket.h @@ -89,7 +89,11 @@ class Socket { */ bool isBlocking() const { return isBlocking_; } - void shutDown() { resetHandler(); } + /** + * @brief shutdown this socket. Any pending operation like blocking read or blocking client + * accept done from any other thread are consequently terminated. + */ + void shutDown(); protected: Socket(); diff --git a/src/src/SocketHandler.cpp b/src/src/SocketHandler.cpp index 724582c..3c679db 100644 --- a/src/src/SocketHandler.cpp +++ b/src/src/SocketHandler.cpp @@ -89,7 +89,13 @@ void close(SocketID &socket_id) { } } // namespace -SocketHandler::~SocketHandler() { MinimalSocket::close(socket_id); } +SocketHandler::~SocketHandler() { + MinimalSocket::close(socket_id); +} + +void SocketHandler::shutDown() { + MinimalSocket::close(socket_id); +} void SocketHandler::reset(SocketID hndl) { if (socket_id != SCK_INVALID_SOCKET) { diff --git a/src/src/SocketHandler.h b/src/src/SocketHandler.h index 3f347b2..d36646d 100644 --- a/src/src/SocketHandler.h +++ b/src/src/SocketHandler.h @@ -63,10 +63,12 @@ class SocketHandler { SocketHandler() = default; /** - * @brief close and shutdown the current socket + * @brief internally calls shut down */ ~SocketHandler(); + void shutDown(); + /** * @brief regenerates the socket descriptor, i.e. creates a new socket */ diff --git a/src/src/core/Socket.cpp b/src/src/core/Socket.cpp index 5067804..14f9ddc 100644 --- a/src/src/core/Socket.cpp +++ b/src/src/core/Socket.cpp @@ -32,6 +32,8 @@ Socket::~Socket() = default; Socket::Socket() { resetHandler(); } +void Socket::shutDown() { socket_id_wrapper->shutDown(); } + int Socket::getSocketDescriptor() const { return static_cast(getHandler().accessId()); }