aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Networking
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2015-03-29 11:25:48 +0200
committerRat <gmstreetrat@gmail.com>2015-03-29 11:25:48 +0200
commit3660c3a37f7f5a61e14f28c09f94f57fe6315788 (patch)
tree61e92a0de035697d350d1545c1bdafd569d91778 /src/server/shared/Networking
parenteebc468e628acc801a6426e03815150c8cfd9172 (diff)
parentc26dbb786a91b0454a8648039b63d3dc9ddd1c42 (diff)
Merge branch '6.x' of https://github.com/TrinityCore/TrinityCore into 6.x
Conflicts: src/server/game/Handlers/MiscHandler.cpp src/server/game/Server/Protocol/Opcodes.cpp
Diffstat (limited to 'src/server/shared/Networking')
-rw-r--r--src/server/shared/Networking/Socket.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h
index f7a1b954cb0..0ac23a96224 100644
--- a/src/server/shared/Networking/Socket.h
+++ b/src/server/shared/Networking/Socket.h
@@ -62,7 +62,7 @@ public:
return false;
#ifndef TC_SOCKET_USE_IOCP
- std::unique_lock<std::mutex> guard(_writeLock, std::try_to_lock);
+ std::unique_lock<std::mutex> guard(_writeLock);
if (!guard)
return true;
@@ -140,6 +140,8 @@ public:
if (shutdownError)
TC_LOG_DEBUG("network", "Socket::CloseSocket: %s errored when shutting down socket: %i (%s)", GetRemoteIpAddress().to_string().c_str(),
shutdownError.value(), shutdownError.message().c_str());
+
+ OnClose();
}
/// Marks the socket for closing after write buffer becomes empty
@@ -148,6 +150,8 @@ public:
MessageBuffer& GetReadBuffer() { return _readBuffer; }
protected:
+ virtual void OnClose() { }
+
virtual void ReadHandler() = 0;
bool AsyncProcessQueue(std::unique_lock<std::mutex>&)
@@ -169,6 +173,15 @@ protected:
return false;
}
+ void SetNoDelay(bool enable)
+ {
+ boost::system::error_code err;
+ _socket.set_option(boost::asio::ip::tcp::no_delay(enable), err);
+ if (err)
+ TC_LOG_DEBUG("network", "Socket::SetNoDelay: failed to set_option(boost::asio::ip::tcp::no_delay) for %s - %d (%s)",
+ GetRemoteIpAddress().to_string().c_str(), err.value(), err.message().c_str());
+ }
+
std::mutex _writeLock;
std::queue<MessageBuffer> _writeQueue;
#ifndef TC_SOCKET_USE_IOCP