mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +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
|
// reportable
|
||||||
if (pprint->can_print()) {
|
if (pprint->can_print()) {
|
||||||
SRT_TRACEBSTATS srt_stats;
|
SrsSrtStat s;
|
||||||
srs_error_t err_tmp = srs_srt_get_stats(srt_fd_, &srt_stats, true);
|
if ((err = s.fetch(srt_fd_, true)) != srs_success) {
|
||||||
if (err_tmp != srs_success) {
|
srs_freep(err);
|
||||||
srs_freep(err_tmp);
|
|
||||||
} else {
|
} else {
|
||||||
srs_trace("<- " SRS_CONSTS_LOG_SRT_PUBLISH " Transport Stats # "
|
srs_trace("<- " SRS_CONSTS_LOG_SRT_PUBLISH " Transport Stats # pktRecv=%" PRId64 ", pktRcvLoss=%d, pktRcvRetrans=%d, pktRcvDrop=%d",
|
||||||
"pktRecv=%ld, pktRcvLoss=%d, pktRcvRetrans=%d, pktRcvDrop=%d",
|
s.pktRecv(), s.pktRcvLoss(), s.pktRcvRetrans(), s.pktRcvDrop());
|
||||||
srt_stats.pktRecv, srt_stats.pktRcvLoss, srt_stats.pktRcvRetrans, srt_stats.pktRcvDrop);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kbps_->sample();
|
kbps_->sample();
|
||||||
|
@ -467,14 +465,12 @@ srs_error_t SrsMpegtsSrtConn::do_playing()
|
||||||
|
|
||||||
// reportable
|
// reportable
|
||||||
if (pprint->can_print()) {
|
if (pprint->can_print()) {
|
||||||
SRT_TRACEBSTATS srt_stats;
|
SrsSrtStat s;
|
||||||
srs_error_t err_tmp = srs_srt_get_stats(srt_fd_, &srt_stats, true);
|
if ((err = s.fetch(srt_fd_, true)) != srs_success) {
|
||||||
if (err_tmp != srs_success) {
|
srs_freep(err);
|
||||||
srs_freep(err_tmp);
|
|
||||||
} else {
|
} else {
|
||||||
srs_trace("-> " SRS_CONSTS_LOG_SRT_PLAY " Transport Stats # "
|
srs_trace("-> " SRS_CONSTS_LOG_SRT_PLAY " Transport Stats # pktSent=%" PRId64 ", pktSndLoss=%d, pktRetrans=%d, pktSndDrop=%d",
|
||||||
"pktSent=%ld, pktSndLoss=%d, pktRetrans=%d, pktSndDrop=%d",
|
s.pktSent(), s.pktSndLoss(), s.pktRetrans(), s.pktSndDrop());
|
||||||
srt_stats.pktSent, srt_stats.pktSndLoss, srt_stats.pktRetrans, srt_stats.pktSndDrop);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kbps_->sample();
|
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;
|
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;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
int ret = srt_bstats(srt_fd, srt_stats, clear);
|
int r0 = srt_bstats(srt_fd, (SRT_TRACEBSTATS*)stat_, clear);
|
||||||
if (ret != 0) {
|
if (r0) {
|
||||||
return srs_error_new(ERROR_SRT_STATS, "srt_bstats");
|
return srs_error_new(ERROR_SRT_STATS, "srt_bstats r0=%d", r0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
|
|
||||||
#include <srt/srt.h>
|
#include <srt/srt.h>
|
||||||
|
|
||||||
|
class SrsSrtSocket;
|
||||||
|
|
||||||
// Create srt socket only, with libsrt's default option.
|
// Create srt socket only, with libsrt's default option.
|
||||||
extern srs_error_t srs_srt_socket(SRTSOCKET* pfd);
|
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);
|
extern srs_error_t srs_srt_get_remote_ip_port(SRTSOCKET srt_fd, std::string& ip, int& port);
|
||||||
|
|
||||||
// Get SRT stats.
|
// Get SRT stats.
|
||||||
extern srs_error_t srs_srt_get_stats(SRTSOCKET srt_fd, SRT_TRACEBSTATS* srt_stats, bool clear);
|
class SrsSrtStat
|
||||||
|
{
|
||||||
class SrsSrtSocket;
|
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.
|
// Srt poller, subscribe/unsubscribed events and wait them fired.
|
||||||
class SrsSrtPoller
|
class SrsSrtPoller
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue