From 0e7836868c480aa9ed0cf82db233965876d4dd9e Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 1 Dec 2014 22:53:03 +0800 Subject: [PATCH] for bug #235, refine the queue recv thread. --- trunk/src/app/srs_app_recv_thread.cpp | 14 ++++++++++++-- trunk/src/app/srs_app_recv_thread.hpp | 6 +++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/trunk/src/app/srs_app_recv_thread.cpp b/trunk/src/app/srs_app_recv_thread.cpp index fe27a6c39..317309627 100644 --- a/trunk/src/app/srs_app_recv_thread.cpp +++ b/trunk/src/app/srs_app_recv_thread.cpp @@ -114,13 +114,13 @@ void SrsRecvThread::on_thread_stop() } SrsQueueRecvThread::SrsQueueRecvThread(SrsRtmpServer* rtmp_sdk, int timeout_ms) - : SrsRecvThread(this, rtmp_sdk, timeout_ms) + : trd(this, rtmp_sdk, timeout_ms) { } SrsQueueRecvThread::~SrsQueueRecvThread() { - stop(); + trd.stop(); // clear all messages. std::vector::iterator it; @@ -131,6 +131,16 @@ SrsQueueRecvThread::~SrsQueueRecvThread() queue.clear(); } +int SrsQueueRecvThread::start() +{ + return trd.start(); +} + +void SrsQueueRecvThread::stop() +{ + trd.stop(); +} + bool SrsQueueRecvThread::empty() { return queue.empty(); diff --git a/trunk/src/app/srs_app_recv_thread.hpp b/trunk/src/app/srs_app_recv_thread.hpp index 18be0df1e..31852742e 100644 --- a/trunk/src/app/srs_app_recv_thread.hpp +++ b/trunk/src/app/srs_app_recv_thread.hpp @@ -87,13 +87,17 @@ public: * @see: SrsRtmpConn::playing * @see: https://github.com/winlinvip/simple-rtmp-server/issues/217 */ -class SrsQueueRecvThread : virtual public ISrsMessageHandler, virtual public SrsRecvThread +class SrsQueueRecvThread : virtual public ISrsMessageHandler { private: std::vector queue; + SrsRecvThread trd; public: SrsQueueRecvThread(SrsRtmpServer* rtmp_sdk, int timeout_ms); virtual ~SrsQueueRecvThread(); +public: + virtual int start(); + virtual void stop(); public: virtual bool empty(); virtual int size();