From 1f76dc78d893b50b5a4f3b312c34151c13cf70ac Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 30 Mar 2017 20:27:31 -0400 Subject: [PATCH] cleanup acceptor for AcceptOnce --- Streaming.cpp | 14 ++++++++------ Streaming.h | 4 +++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Streaming.cpp b/Streaming.cpp index 4cc0a592..db5f825e 100644 --- a/Streaming.cpp +++ b/Streaming.cpp @@ -1091,16 +1091,18 @@ namespace stream } else // we must save old acceptor and set it back { - auto oldAcceptor = m_Acceptor; - m_Acceptor = [acceptor, oldAcceptor, this](std::shared_ptr stream) - { - acceptor (stream); // m_Acceptor might be set after - m_Acceptor = oldAcceptor; // so we must restore old one before - }; + m_Acceptor = std::bind (&StreamingDestination::AcceptOnceAcceptor, this, + std::placeholders::_1, acceptor, m_Acceptor); } }); } + void StreamingDestination::AcceptOnceAcceptor (std::shared_ptr stream, Acceptor acceptor, Acceptor prev) + { + m_Acceptor = prev; + acceptor (stream); + } + void StreamingDestination::HandlePendingIncomingTimer (const boost::system::error_code& ecode) { if (ecode != boost::asio::error::operation_aborted) diff --git a/Streaming.h b/Streaming.h index be8f3f1a..c598245a 100644 --- a/Streaming.h +++ b/Streaming.h @@ -280,7 +280,9 @@ namespace stream void DeletePacket (Packet * p) { if (p) m_PacketsPool.Release (p); }; private: - + + void AcceptOnceAcceptor (std::shared_ptr stream, Acceptor acceptor, Acceptor prev); + void HandleNextPacket (Packet * packet); std::shared_ptr CreateNewIncomingStream (); void HandlePendingIncomingTimer (const boost::system::error_code& ecode);