mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 11:51:57 +00:00
SRT: Wrap SRT stat object.
This commit is contained in:
parent
78b778fb93
commit
94cc50d146
3 changed files with 87 additions and 21 deletions
|
@ -384,14 +384,12 @@ srs_error_t SrsMpegtsSrtConn::do_publishing()
|
|||
|
||||
// reportable
|
||||
if (pprint->can_print()) {
|
||||
SRT_TRACEBSTATS srt_stats;
|
||||
srs_error_t err_tmp = srs_srt_get_stats(srt_fd_, &srt_stats, true);
|
||||
if (err_tmp != srs_success) {
|
||||
srs_freep(err_tmp);
|
||||
SrsSrtStat s;
|
||||
if ((err = s.fetch(srt_fd_, true)) != srs_success) {
|
||||
srs_freep(err);
|
||||
} else {
|
||||
srs_trace("<- " SRS_CONSTS_LOG_SRT_PUBLISH " Transport Stats # "
|
||||
"pktRecv=%ld, pktRcvLoss=%d, pktRcvRetrans=%d, pktRcvDrop=%d",
|
||||
srt_stats.pktRecv, srt_stats.pktRcvLoss, srt_stats.pktRcvRetrans, srt_stats.pktRcvDrop);
|
||||
srs_trace("<- " SRS_CONSTS_LOG_SRT_PUBLISH " Transport Stats # pktRecv=%" PRId64 ", pktRcvLoss=%d, pktRcvRetrans=%d, pktRcvDrop=%d",
|
||||
s.pktRecv(), s.pktRcvLoss(), s.pktRcvRetrans(), s.pktRcvDrop());
|
||||
}
|
||||
|
||||
kbps_->sample();
|
||||
|
@ -467,14 +465,12 @@ srs_error_t SrsMpegtsSrtConn::do_playing()
|
|||
|
||||
// reportable
|
||||
if (pprint->can_print()) {
|
||||
SRT_TRACEBSTATS srt_stats;
|
||||
srs_error_t err_tmp = srs_srt_get_stats(srt_fd_, &srt_stats, true);
|
||||
if (err_tmp != srs_success) {
|
||||
srs_freep(err_tmp);
|
||||
SrsSrtStat s;
|
||||
if ((err = s.fetch(srt_fd_, true)) != srs_success) {
|
||||
srs_freep(err);
|
||||
} else {
|
||||
srs_trace("-> " SRS_CONSTS_LOG_SRT_PLAY " Transport Stats # "
|
||||
"pktSent=%ld, pktSndLoss=%d, pktRetrans=%d, pktSndDrop=%d",
|
||||
srt_stats.pktSent, srt_stats.pktSndLoss, srt_stats.pktRetrans, srt_stats.pktSndDrop);
|
||||
srs_trace("-> " SRS_CONSTS_LOG_SRT_PLAY " Transport Stats # pktSent=%" PRId64 ", pktSndLoss=%d, pktRetrans=%d, pktSndDrop=%d",
|
||||
s.pktSent(), s.pktSndLoss(), s.pktRetrans(), s.pktSndDrop());
|
||||
}
|
||||
|
||||
kbps_->sample();
|
||||
|
|
|
@ -376,13 +376,64 @@ srs_error_t srs_srt_get_remote_ip_port(SRTSOCKET srt_fd, std::string& ip, int& p
|
|||
return err;
|
||||
}
|
||||
|
||||
srs_error_t srs_srt_get_stats(SRTSOCKET srt_fd, SRT_TRACEBSTATS* srt_stats, bool clear)
|
||||
SrsSrtStat::SrsSrtStat()
|
||||
{
|
||||
stat_ = new SRT_TRACEBSTATS();
|
||||
}
|
||||
|
||||
SrsSrtStat::~SrsSrtStat()
|
||||
{
|
||||
SRT_TRACEBSTATS* p = (SRT_TRACEBSTATS*)stat_;
|
||||
srs_freep(p);
|
||||
}
|
||||
|
||||
int64_t SrsSrtStat::pktRecv()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktRecv;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktRcvLoss()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktRcvLoss;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktRcvRetrans()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktRcvRetrans;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktRcvDrop()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktRcvDrop;
|
||||
}
|
||||
|
||||
int64_t SrsSrtStat::pktSent()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktSent;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktSndLoss()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktSndLoss;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktRetrans()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktRetrans;
|
||||
}
|
||||
|
||||
int SrsSrtStat::pktSndDrop()
|
||||
{
|
||||
return ((SRT_TRACEBSTATS*)stat_)->pktSndDrop;
|
||||
}
|
||||
|
||||
srs_error_t SrsSrtStat::fetch(SRTSOCKET srt_fd, bool clear)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
int ret = srt_bstats(srt_fd, srt_stats, clear);
|
||||
if (ret != 0) {
|
||||
return srs_error_new(ERROR_SRT_STATS, "srt_bstats");
|
||||
int r0 = srt_bstats(srt_fd, (SRT_TRACEBSTATS*)stat_, clear);
|
||||
if (r0) {
|
||||
return srs_error_new(ERROR_SRT_STATS, "srt_bstats r0=%d", r0);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
#include <srt/srt.h>
|
||||
|
||||
class SrsSrtSocket;
|
||||
|
||||
// Create srt socket only, with libsrt's default option.
|
||||
extern srs_error_t srs_srt_socket(SRTSOCKET* pfd);
|
||||
|
||||
|
@ -62,9 +64,26 @@ extern srs_error_t srs_srt_get_local_ip_port(SRTSOCKET srt_fd, std::string& ip,
|
|||
extern srs_error_t srs_srt_get_remote_ip_port(SRTSOCKET srt_fd, std::string& ip, int& port);
|
||||
|
||||
// Get SRT stats.
|
||||
extern srs_error_t srs_srt_get_stats(SRTSOCKET srt_fd, SRT_TRACEBSTATS* srt_stats, bool clear);
|
||||
|
||||
class SrsSrtSocket;
|
||||
class SrsSrtStat
|
||||
{
|
||||
private:
|
||||
void* stat_;
|
||||
public:
|
||||
SrsSrtStat();
|
||||
virtual ~SrsSrtStat();
|
||||
public:
|
||||
int64_t pktRecv();
|
||||
int pktRcvLoss();
|
||||
int pktRcvRetrans();
|
||||
int pktRcvDrop();
|
||||
public:
|
||||
int64_t pktSent();
|
||||
int pktSndLoss();
|
||||
int pktRetrans();
|
||||
int pktSndDrop();
|
||||
public:
|
||||
srs_error_t fetch(SRTSOCKET srt_fd, bool clear);
|
||||
};
|
||||
|
||||
// Srt poller, subscribe/unsubscribed events and wait them fired.
|
||||
class SrsSrtPoller
|
||||
|
|
Loading…
Reference in a new issue