From a830289d9749b1f5d16fcbbb71c421fb6c32035d Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 7 Sep 2021 08:20:43 +0800 Subject: [PATCH] Squash: Merge SRS4.0 --- trunk/src/app/srs_app_http_api.cpp | 8 ++++++-- trunk/src/app/srs_app_statistic.cpp | 12 ++++++++---- trunk/src/app/srs_app_statistic.hpp | 4 +++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index 9b0b09b58..c36f0ca0f 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -755,8 +755,12 @@ srs_error_t SrsGoApiStreams::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa if (!stream) { SrsJsonArray* data = SrsJsonAny::array(); obj->set("streams", data); - - if ((err = stat->dumps_streams(data)) != srs_success) { + + std::string rstart = r->query_get("start"); + std::string rcount = r->query_get("count"); + int start = srs_max(0, atoi(rstart.c_str())); + int count = srs_max(10, atoi(rcount.c_str())); + if ((err = stat->dumps_streams(data, start, count)) != srs_success) { int code = srs_error_code(err); srs_error_reset(err); return srs_api_response_code(w, r, code); diff --git a/trunk/src/app/srs_app_statistic.cpp b/trunk/src/app/srs_app_statistic.cpp index f3162cd70..ad0af6445 100644 --- a/trunk/src/app/srs_app_statistic.cpp +++ b/trunk/src/app/srs_app_statistic.cpp @@ -495,12 +495,16 @@ srs_error_t SrsStatistic::dumps_vhosts(SrsJsonArray* arr) return err; } -srs_error_t SrsStatistic::dumps_streams(SrsJsonArray* arr) +srs_error_t SrsStatistic::dumps_streams(SrsJsonArray* arr, int start, int count) { srs_error_t err = srs_success; - - std::map::iterator it; - for (it = streams.begin(); it != streams.end(); it++) { + + std::map::iterator it = streams.begin(); + for (int i = 0; i < start + count && it != streams.end(); it++, i++) { + if (i < start) { + continue; + } + SrsStatisticStream* stream = it->second; SrsJsonObject* obj = SrsJsonAny::object(); diff --git a/trunk/src/app/srs_app_statistic.hpp b/trunk/src/app/srs_app_statistic.hpp index d2e6cf115..37a2edaa1 100644 --- a/trunk/src/app/srs_app_statistic.hpp +++ b/trunk/src/app/srs_app_statistic.hpp @@ -182,7 +182,9 @@ public: // Dumps the vhosts to amf0 array. virtual srs_error_t dumps_vhosts(SrsJsonArray* arr); // Dumps the streams to amf0 array. - virtual srs_error_t dumps_streams(SrsJsonArray* arr); + // @param start the start index, from 0. + // @param count the max count of streams to dump. + virtual srs_error_t dumps_streams(SrsJsonArray* arr, int start, int count); // Dumps the clients to amf0 array // @param start the start index, from 0. // @param count the max count of clients to dump.