diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-04-24 00:10:04 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-04-24 00:10:04 +0200 |
commit | 59e9bcf0bf44d89397f5a182e2ef21f7e3a3635d (patch) | |
tree | 668949c1abeee4863e9c1caefbaab4dd39b3449f /src | |
parent | 15a5eb4e350db33c34d763418a41f3d678729c82 (diff) |
Core/Socket: Removed unused synchronous read method
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 4 | ||||
-rw-r--r-- | src/server/shared/Networking/Socket.h | 21 | ||||
-rw-r--r-- | src/server/shared/Threading/ProducerConsumerQueue.h | 4 |
3 files changed, 6 insertions, 23 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 949e783a3ba..91164ab780e 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -81,8 +81,8 @@ void WorldSocket::Start() initializer.Write(&header, sizeof(header.Setup.Size)); initializer.Write(ServerConnectionInitialize.c_str(), ServerConnectionInitialize.length()); - std::unique_lock<std::mutex> dummy(_writeLock, std::defer_lock); - QueuePacket(std::move(initializer), dummy); + std::unique_lock<std::mutex> guard(_writeLock); + QueuePacket(std::move(initializer), guard); } void WorldSocket::HandleSendAuthSession() diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index 0ac23a96224..d337e07ff52 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -50,6 +50,7 @@ public: virtual ~Socket() { + _closed = true; boost::system::error_code error; _socket.close(error); } @@ -97,26 +98,6 @@ public: std::bind(&Socket<T>::ReadHandlerInternal, this->shared_from_this(), std::placeholders::_1, std::placeholders::_2)); } - void ReadData(std::size_t size) - { - if (!IsOpen()) - return; - - boost::system::error_code error; - - std::size_t bytesRead = boost::asio::read(_socket, boost::asio::buffer(_readBuffer.GetWritePointer(), size), error); - - _readBuffer.WriteCompleted(bytesRead); - - if (error || bytesRead != size) - { - TC_LOG_DEBUG("network", "Socket::ReadData: %s errored with: %i (%s)", GetRemoteIpAddress().to_string().c_str(), error.value(), - error.message().c_str()); - - CloseSocket(); - } - } - void QueuePacket(MessageBuffer&& buffer, std::unique_lock<std::mutex>& guard) { _writeQueue.push(std::move(buffer)); diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index 67150a20d80..3158e3deb24 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -70,7 +70,9 @@ public: { std::unique_lock<std::mutex> lock(_queueLock); - _condition.wait(lock, [this]() { return !_queue.empty() || _shutdown; }); + // we could be using .wait(lock, predicate) overload here but some threading error analysis tools produce false positives + while (_queue.empty() && !_shutdown) + _condition.wait(lock); if (_queue.empty() || _shutdown) return; |