diff options
author | RomanReznichenkoLuxoft <85177915+RomanReznichenkoLuxoft@users.noreply.github.com> | 2022-02-03 19:35:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-03 12:35:40 -0500 |
commit | f6d319f917a4e20cc269b2d002bb6a23b974add4 (patch) | |
tree | 9e2a23f0332be262d389b2c77b5abd055c1182d6 | |
parent | 0dac769e35f40bfc0de0d4676ecba0bcd74afca3 (diff) | |
download | sdl_core-f6d319f917a4e20cc269b2d002bb6a23b974add4.tar.gz |
lock read and write operations (#3851)
Co-authored-by: Yana Chernysheva <ychernysheva@luxoft.com>
-rw-r--r-- | src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h | 2 | ||||
-rw-r--r-- | src/components/transport_manager/src/websocket_server/websocket_session.cc | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h index 009d2fe07c..afdacfc4ec 100644 --- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h +++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h @@ -38,6 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "protocol/raw_message.h" #include "transport_manager/transport_adapter/transport_adapter.h" +#include "utils/lock.h" #include "utils/logger.h" #ifdef ENABLE_SECURITY @@ -103,6 +104,7 @@ class WebSocketSession DataSendDoneCallback data_send_done_; DataSendFailedCallback data_send_failed_; OnIOErrorCallback on_io_error_; + mutable sync_primitives::Lock read_write_operations_lock_; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/src/websocket_server/websocket_session.cc b/src/components/transport_manager/src/websocket_server/websocket_session.cc index 020da580f9..c95cdd2c46 100644 --- a/src/components/transport_manager/src/websocket_server/websocket_session.cc +++ b/src/components/transport_manager/src/websocket_server/websocket_session.cc @@ -89,6 +89,7 @@ void WebSocketSession<ExecutorType>::AsyncAccept() { template <typename ExecutorType> void WebSocketSession<ExecutorType>::AsyncRead(boost::system::error_code ec) { SDL_LOG_AUTO_TRACE(); + sync_primitives::AutoLock lock(read_write_operations_lock_); if (ec) { auto str_err = "ErrorMessage: " + ec.message(); SDL_LOG_ERROR(str_err); @@ -106,6 +107,7 @@ void WebSocketSession<ExecutorType>::AsyncRead(boost::system::error_code ec) { template <typename ExecutorType> void WebSocketSession<ExecutorType>::WriteDown(Message message) { + sync_primitives::AutoLock lock(read_write_operations_lock_); boost::system::error_code ec; ws_.write(boost::asio::buffer(message->data(), message->data_size()), ec); |