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));