From 60f9561d2d6b69d0838b13abf149d69cc1349e8a Mon Sep 17 00:00:00 2001
From: winlin <winlin@vip.126.com>
Date: Tue, 9 Apr 2019 08:47:18 +0800
Subject: [PATCH] Refine get_heartbeat_interval in time unit

---
 trunk/src/app/srs_app_config.cpp     | 6 +++---
 trunk/src/app/srs_app_config.hpp     | 4 ++--
 trunk/src/app/srs_app_server.cpp     | 2 +-
 trunk/src/utest/srs_utest_config.cpp | 9 +++++++++
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp
index 86d1d2dc0..9a81a403b 100644
--- a/trunk/src/app/srs_app_config.cpp
+++ b/trunk/src/app/srs_app_config.cpp
@@ -6944,9 +6944,9 @@ bool SrsConfig::get_heartbeat_enabled()
     return SRS_CONF_PERFER_FALSE(conf->arg0());
 }
 
-int64_t SrsConfig::get_heartbeat_interval()
+srs_utime_t SrsConfig::get_heartbeat_interval()
 {
-    static int64_t DEFAULT = (int64_t)(9.9 * 1000);
+    static srs_utime_t DEFAULT = (srs_utime_t)(9.9 * SRS_UTIME_SECONDS);
     
     SrsConfDirective* conf = get_heartbeart();
     if (!conf) {
@@ -6958,7 +6958,7 @@ int64_t SrsConfig::get_heartbeat_interval()
         return DEFAULT;
     }
     
-    return (int64_t)(::atof(conf->arg0().c_str()) * 1000);
+    return (srs_utime_t)(::atof(conf->arg0().c_str()) * SRS_UTIME_SECONDS);
 }
 
 string SrsConfig::get_heartbeat_url()
diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp
index b7c2e0ab5..bf882efdb 100644
--- a/trunk/src/app/srs_app_config.hpp
+++ b/trunk/src/app/srs_app_config.hpp
@@ -1423,9 +1423,9 @@ public:
      */
     virtual bool get_heartbeat_enabled();
     /**
-     * get the heartbeat interval, in ms.
+     * get the heartbeat interval, in srs_utime_t.
      */
-    virtual int64_t get_heartbeat_interval();
+    virtual srs_utime_t get_heartbeat_interval();
     /**
      * get the heartbeat report url.
      */
diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp
index 647b52c83..f3990e0bb 100644
--- a/trunk/src/app/srs_app_server.cpp
+++ b/trunk/src/app/srs_app_server.cpp
@@ -910,7 +910,7 @@ srs_error_t SrsServer::do_cycle()
         }
         
         // the interval in config.
-        int heartbeat_max_resolution = (int)(_srs_config->get_heartbeat_interval() * SRS_UTIME_MILLISECONDS / SRS_SYS_CYCLE_INTERVAL);
+        int heartbeat_max_resolution = (int)(_srs_config->get_heartbeat_interval() / SRS_SYS_CYCLE_INTERVAL);
         
         // dynamic fetch the max.
         int dynamic_max = srs_max(max, heartbeat_max_resolution);
diff --git a/trunk/src/utest/srs_utest_config.cpp b/trunk/src/utest/srs_utest_config.cpp
index 07d0c733b..3fc336af4 100644
--- a/trunk/src/utest/srs_utest_config.cpp
+++ b/trunk/src/utest/srs_utest_config.cpp
@@ -1807,6 +1807,7 @@ VOID TEST(ConfigMainTest, CheckConf_vhost_ingest_id)
 VOID TEST(ConfigUnitTest, CheckDefaultValues)
 {
     MockSrsConfig conf;
+
     if (true) {
 	    EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF));
 	    EXPECT_EQ(30 * SRS_UTIME_SECONDS, conf.get_bw_check_interval(""));
@@ -1826,5 +1827,13 @@ VOID TEST(ConfigUnitTest, CheckDefaultValues)
 	    EXPECT_EQ(40 * SRS_UTIME_SECONDS, conf.get_dash_update_period("v"));
 	    EXPECT_EQ(70 * SRS_UTIME_SECONDS, conf.get_dash_timeshift("v"));
     }
+
+    if (true) {
+	    EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF));
+	    EXPECT_EQ(srs_utime_t(9.9 * SRS_UTIME_SECONDS), conf.get_heartbeat_interval());
+
+	    EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"heartbeat{interval 10;}"));
+	    EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_heartbeat_interval());
+    }
 }