From 6f272ea5b7d6551844aa1a1f748cee5c79b746f3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 27 Jul 2014 17:46:46 +0200 Subject: Core/Network: Optimized packet sending by removing unneccessary memory copying --- src/server/shared/Threading/ProducerConsumerQueue.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/server/shared/Threading/ProducerConsumerQueue.h') diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index 45a1cbc692a..1fee1d0685f 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -22,12 +22,11 @@ #include #include #include +#include template class ProducerConsumerQueue { - static_assert(std::is_pointer::value, "T for ProducerConsumerQueue must be a pointer"); - private: std::mutex _queueLock; std::queue _queue; @@ -94,7 +93,7 @@ public: { T& value = _queue.front(); - delete value; + DeleteQueuedObject(value); _queue.pop(); } @@ -105,8 +104,13 @@ public: _condition.notify_all(); } -}; -#endif +private: + template + typename std::enable_if::value>::type DeleteQueuedObject(E& obj) { delete obj; } + template + typename std::enable_if::value>::type DeleteQueuedObject(E const& /*packet*/) { } +}; +#endif -- cgit v1.2.3