1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-12 19:31:53 +00:00

Refine get_pithy_print in time unit

This commit is contained in:
winlin 2019-04-09 08:55:54 +08:00
parent 60f9561d2d
commit 5df8f2f6c1
6 changed files with 22 additions and 13 deletions

View file

@ -49,7 +49,7 @@ daemon on;
# if on, use gmtime() instead, which use UTC time.
# default: off
utc_time off;
# config for the pithy print,
# config for the pithy print in ms,
# which always print constant message specified by interval,
# whatever the clients in concurrency.
# default: 10000

View file

@ -4055,16 +4055,16 @@ string SrsConfig::get_pid_file()
return conf->arg0();
}
int SrsConfig::get_pithy_print_ms()
srs_utime_t SrsConfig::get_pithy_print()
{
static int DEFAULT = 10000;
static srs_utime_t DEFAULT = 10 * SRS_UTIME_SECONDS;
SrsConfDirective* conf = root->get("pithy_print_ms");
if (!conf || conf->arg0().empty()) {
return DEFAULT;
}
return ::atoi(conf->arg0().c_str());
return (srs_utime_t)(::atoi(conf->arg0().c_str()) * SRS_UTIME_MILLISECONDS);
}
bool SrsConfig::get_utc_time()

View file

@ -604,11 +604,11 @@ public:
*/
virtual std::string get_pid_file();
/**
* get pithy print pulse ms,
* get pithy print pulse in srs_utime_t,
* for example, all rtmp connections only print one message
* every this interval in ms.
*/
virtual int get_pithy_print_ms();
virtual srs_utime_t get_pithy_print();
/**
* whether use utc-time to format the time.
*/

View file

@ -49,17 +49,17 @@ SrsStageInfo::~SrsStageInfo()
void SrsStageInfo::update_print_time()
{
pithy_print_time_ms = _srs_config->get_pithy_print_ms();
interval = _srs_config->get_pithy_print();
}
void SrsStageInfo::elapse(int64_t diff)
void SrsStageInfo::elapse(srs_utime_t diff)
{
age += diff;
}
bool SrsStageInfo::can_print()
{
int64_t can_print_age = nb_clients * pithy_print_time_ms;
srs_utime_t can_print_age = nb_clients * interval;
bool can_print = age >= can_print_age;
if (can_print) {
@ -211,7 +211,7 @@ void SrsPithyPrint::elapse()
int64_t diff = srs_get_system_time_ms() - previous_tick;
diff = srs_max(0, diff);
stage->elapse(diff);
stage->elapse(diff * SRS_UTIME_MILLISECONDS);
_age += diff;
previous_tick = srs_get_system_time_ms();
}

View file

@ -27,6 +27,7 @@
#include <srs_core.hpp>
#include <srs_app_reload.hpp>
#include <srs_service_time.hpp>
/**
* the stage info to calc the age.
@ -35,16 +36,16 @@ class SrsStageInfo : public ISrsReloadHandler
{
public:
int stage_id;
int pithy_print_time_ms;
srs_utime_t interval;
int nb_clients;
public:
int64_t age;
srs_utime_t age;
public:
SrsStageInfo(int _stage_id);
virtual ~SrsStageInfo();
virtual void update_print_time();
public:
virtual void elapse(int64_t diff);
virtual void elapse(srs_utime_t diff);
virtual bool can_print();
public:
virtual srs_error_t on_reload_pithy_print();

View file

@ -1835,5 +1835,13 @@ VOID TEST(ConfigUnitTest, CheckDefaultValues)
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"heartbeat{interval 10;}"));
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_heartbeat_interval());
}
if (true) {
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF));
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_pithy_print());
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"pithy_print_ms 20000;"));
EXPECT_EQ(20 * SRS_UTIME_SECONDS, conf.get_pithy_print());
}
}