From 8728aa28403efefe5ad469e7a5591e5787c1da81 Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 27 Mar 2014 15:56:13 -0400 Subject: [PATCH] check buffer first for async receive --- Streaming.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Streaming.h b/Streaming.h index 8de2d241..b25c70a0 100644 --- a/Streaming.h +++ b/Streaming.h @@ -200,6 +200,16 @@ namespace stream template void Stream::AsyncReceive (const Buffer& buffer, ReceiveHandler handler, int timeout) { + if (!m_ReceiveQueue.IsEmpty ()) + { + size_t received = ConcatenatePackets (boost::asio::buffer_cast(buffer), boost::asio::buffer_size(buffer)); + if (received) + { + // TODO: post to stream's thread + handler (boost::system::error_code (), received); + return; + } + } m_ReceiveTimer.expires_from_now (boost::posix_time::seconds(timeout)); m_ReceiveTimer.async_wait (boost::bind (&Stream::HandleReceiveTimer, this, boost::asio::placeholders::error, buffer, handler));