From 00c192ede1955ad376697faa9f60fa2cfe2207a9 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 23 Apr 2021 11:17:58 +0800 Subject: [PATCH] Timer: Apply shared FastTimer to RTC server. 4.0.93 --- README.md | 1 + trunk/src/app/srs_app_rtc_server.cpp | 15 ++++----------- trunk/src/app/srs_app_rtc_server.hpp | 9 ++++----- trunk/src/core/srs_core_version4.hpp | 2 +- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index c8eb328e9..89aa0abb5 100755 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ Other important wiki: ## V4 changes +* v4.0, 2021-05-01, Timer: Extract and apply shared FastTimer. 4.0.93 * v4.0, 2021-04-29, RTC: Support AV1 for Chrome M90. 4.0.91 * v4.0, 2021-04-24, Change push-RTSP as deprecated feature. * v4.0, 2021-04-24, Player: Change the default from RTMP to HTTP-FLV. diff --git a/trunk/src/app/srs_app_rtc_server.cpp b/trunk/src/app/srs_app_rtc_server.cpp index af00cbd0c..0f83bc9a6 100644 --- a/trunk/src/app/srs_app_rtc_server.cpp +++ b/trunk/src/app/srs_app_rtc_server.cpp @@ -259,7 +259,6 @@ SrsRtcServer::SrsRtcServer() { handler = NULL; hijacker = NULL; - timer = new SrsHourGlass("server", this, 1 * SRS_UTIME_SECONDS); _srs_config->subscribe(this); } @@ -268,8 +267,6 @@ SrsRtcServer::~SrsRtcServer() { _srs_config->unsubscribe(this); - srs_freep(timer); - if (true) { vector::iterator it; for (it = listeners.begin(); it != listeners.end(); ++it) { @@ -283,14 +280,10 @@ srs_error_t SrsRtcServer::initialize() { srs_error_t err = srs_success; - if ((err = timer->tick(5 * SRS_UTIME_SECONDS)) != srs_success) { - return srs_error_wrap(err, "hourglass tick"); - } - - if ((err = timer->start()) != srs_success) { - return srs_error_wrap(err, "start timer"); - } + // The RTC server start a timer, do routines of RTC server. + _srs_hybrid->timer()->subscribe(5 * SRS_UTIME_SECONDS, this); + // Initialize the black hole. if ((err = _srs_blackhole->initialize()) != srs_success) { return srs_error_wrap(err, "black hole"); } @@ -640,7 +633,7 @@ SrsRtcConnection* SrsRtcServer::find_session_by_username(const std::string& user return dynamic_cast(conn); } -srs_error_t SrsRtcServer::notify(int type, srs_utime_t interval, srs_utime_t tick) +srs_error_t SrsRtcServer::on_timer(srs_utime_t interval, srs_utime_t tick) { srs_error_t err = srs_success; diff --git a/trunk/src/app/srs_app_rtc_server.hpp b/trunk/src/app/srs_app_rtc_server.hpp index 988d65115..ef3064dbb 100644 --- a/trunk/src/app/srs_app_rtc_server.hpp +++ b/trunk/src/app/srs_app_rtc_server.hpp @@ -105,10 +105,9 @@ public: }; // The RTC server instance, listen UDP port, handle UDP packet, manage RTC connections. -class SrsRtcServer : virtual public ISrsUdpMuxHandler, virtual public ISrsHourGlass, virtual public ISrsReloadHandler +class SrsRtcServer : public ISrsUdpMuxHandler, public ISrsFastTimer, public ISrsReloadHandler { private: - SrsHourGlass* timer; std::vector listeners; ISrsRtcServerHandler* handler; ISrsRtcServerHijacker* hijacker; @@ -137,9 +136,9 @@ private: srs_error_t do_create_session(SrsRtcUserConfig* ruc, SrsSdp& local_sdp, SrsRtcConnection* session); public: SrsRtcConnection* find_session_by_username(const std::string& ufrag); -// interface ISrsHourGlass -public: - virtual srs_error_t notify(int type, srs_utime_t interval, srs_utime_t tick); +// interface ISrsFastTimer +private: + srs_error_t on_timer(srs_utime_t interval, srs_utime_t tick); }; // The RTC server adapter. diff --git a/trunk/src/core/srs_core_version4.hpp b/trunk/src/core/srs_core_version4.hpp index a4c0ba3bf..25dcf6fdb 100644 --- a/trunk/src/core/srs_core_version4.hpp +++ b/trunk/src/core/srs_core_version4.hpp @@ -26,6 +26,6 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 0 -#define VERSION_REVISION 92 +#define VERSION_REVISION 93 #endif