From 76c825eb669b399473aad4c932d0564fcb66870d Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 27 Aug 2022 18:50:13 +0800 Subject: [PATCH] STAT: Refine stat for global server. --- trunk/src/app/srs_app_http_conn.cpp | 6 ++++++ trunk/src/app/srs_app_http_conn.hpp | 1 + trunk/src/app/srs_app_rtc_conn.cpp | 2 +- trunk/src/app/srs_app_rtmp_conn.cpp | 5 +++++ trunk/src/app/srs_app_server.cpp | 14 ++------------ trunk/src/protocol/srs_protocol_utility.cpp | 4 ++-- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/trunk/src/app/srs_app_http_conn.cpp b/trunk/src/app/srs_app_http_conn.cpp index 0aabada974e..9c3dc4ce8f9 100644 --- a/trunk/src/app/srs_app_http_conn.cpp +++ b/trunk/src/app/srs_app_http_conn.cpp @@ -41,6 +41,7 @@ using namespace std; #include #include #include +#include ISrsHttpConnOwner::ISrsHttpConnOwner() { @@ -411,6 +412,11 @@ srs_error_t SrsResponseOnlyHttpConn::on_message_done(ISrsHttpMessage* r, SrsHttp srs_error_t SrsResponseOnlyHttpConn::on_conn_done(srs_error_t r0) { + // Update statistic when done. + SrsStatistic* stat = SrsStatistic::instance(); + stat->kbps_add_delta(get_id().c_str(), this); + stat->on_disconnect(get_id().c_str()); + // Because we use manager to manage this object, // not the http connection object, so we must remove it here. manager->remove(this); diff --git a/trunk/src/app/srs_app_http_conn.hpp b/trunk/src/app/srs_app_http_conn.hpp index fa12a6fee51..7eb8743d209 100644 --- a/trunk/src/app/srs_app_http_conn.hpp +++ b/trunk/src/app/srs_app_http_conn.hpp @@ -57,6 +57,7 @@ class ISrsHttpConnOwner virtual srs_error_t on_conn_done(srs_error_t r0) = 0; }; +// TODO: FIXME: Should rename to roundtrip or responder, not connection. // The http connection which request the static or stream content. class SrsHttpConn : public ISrsStartableConneciton, public ISrsCoroutineHandler , public ISrsExpire diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 6c04a79a216..2ec245eb803 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -591,7 +591,7 @@ srs_error_t SrsRtcPlayStream::start() // update the statistic when client discoveried. SrsStatistic* stat = SrsStatistic::instance(); if ((err = stat->on_client(cid_.c_str(), req_, session_, SrsRtcConnPlay)) != srs_success) { - return srs_error_wrap(err, "rtc: stat client"); + return srs_error_wrap(err, "rtc: stat client"); } is_started = true; diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index 341eaef0ac6..f256747e966 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -1458,6 +1458,11 @@ srs_error_t SrsRtmpConn::cycle() { srs_error_t err = do_cycle(); + // Update statistic when done. + SrsStatistic* stat = SrsStatistic::instance(); + stat->kbps_add_delta(get_id().c_str(), this); + stat->on_disconnect(get_id().c_str()); + // Notify manager to remove it. // Note that we create this object, so we use manager to remove it. manager->remove(this); diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index 5a503456225..e62ff49dc94 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -1298,12 +1298,8 @@ void SrsServer::resample_kbps() stat->kbps_add_delta(c->get_id().c_str(), conn); } - // TODO: FXME: support all other connections. - - // sample the kbps, get the stat. - SrsKbps* kbps = stat->kbps_sample(); - - srs_update_rtmp_server((int)conn_manager->size(), kbps); + // Update the global server level statistics. + stat->kbps_sample(); } srs_error_t SrsServer::accept_client(SrsListenerType type, srs_netfd_t stfd) @@ -1401,12 +1397,6 @@ srs_error_t SrsServer::fd_to_resource(SrsListenerType type, srs_netfd_t stfd, IS void SrsServer::remove(ISrsResource* c) { - ISrsStartableConneciton* conn = dynamic_cast(c); - - SrsStatistic* stat = SrsStatistic::instance(); - stat->kbps_add_delta(c->get_id().c_str(), conn); - stat->on_disconnect(c->get_id().c_str()); - // use manager to free it async. conn_manager->remove(c); } diff --git a/trunk/src/protocol/srs_protocol_utility.cpp b/trunk/src/protocol/srs_protocol_utility.cpp index 84b78c69f36..384a2413705 100644 --- a/trunk/src/protocol/srs_protocol_utility.cpp +++ b/trunk/src/protocol/srs_protocol_utility.cpp @@ -195,12 +195,12 @@ string srs_generate_tc_url(string host, string vhost, string app, int port) string tcUrl = "rtmp://"; if (vhost == SRS_CONSTS_RTMP_DEFAULT_VHOST) { - tcUrl += host; + tcUrl += host.empty() ? SRS_CONSTS_RTMP_DEFAULT_VHOST : host; } else { tcUrl += vhost; } - if (port != SRS_CONSTS_RTMP_DEFAULT_PORT) { + if (port && port != SRS_CONSTS_RTMP_DEFAULT_PORT) { tcUrl += ":" + srs_int2str(port); }