mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 10:40:05 +08:00
新增实例上报功能: #2294
This commit is contained in:
parent
4617b6faa0
commit
843e3423cf
@ -1 +1 @@
|
|||||||
Subproject commit 43690d713c156007da43bc0210f81293d0ebd460
|
Subproject commit aea48a14f9619d292789b6ba66d2922e1ed36e71
|
@ -54,7 +54,7 @@ option(ENABLE_SCTP "Enable SCTP" ON)
|
|||||||
option(ENABLE_WEBRTC "Enable WebRTC" ON)
|
option(ENABLE_WEBRTC "Enable WebRTC" ON)
|
||||||
option(ENABLE_X264 "Enable x264" OFF)
|
option(ENABLE_X264 "Enable x264" OFF)
|
||||||
option(ENABLE_WEPOLL "Enable wepoll" ON)
|
option(ENABLE_WEPOLL "Enable wepoll" ON)
|
||||||
|
option(DISABLE_REPORT "Disable report to report.zlmediakit.com" off)
|
||||||
option(USE_SOLUTION_FOLDERS "Enable solution dir supported" ON)
|
option(USE_SOLUTION_FOLDERS "Enable solution dir supported" ON)
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@ -203,6 +203,10 @@ endif()
|
|||||||
update_cached_list(MK_LINK_LIBRARIES "")
|
update_cached_list(MK_LINK_LIBRARIES "")
|
||||||
update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_VERSION)
|
update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_VERSION)
|
||||||
|
|
||||||
|
if (DISABLE_REPORT)
|
||||||
|
update_cached_list(MK_COMPILE_DEFINITIONS DISABLE_REPORT)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/atomic_check.cpp atomic_check_cpp)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/atomic_check.cpp atomic_check_cpp)
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "HttpRequester.h"
|
#include "HttpRequester.h"
|
||||||
|
#include "Util/onceToken.h"
|
||||||
|
#include "Util/NoticeCenter.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace toolkit;
|
using namespace toolkit;
|
||||||
@ -47,4 +49,147 @@ void HttpRequester::setOnResult(const HttpRequesterResult &onResult) {
|
|||||||
_on_result = onResult;
|
_on_result = onResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#if !defined(DISABLE_REPORT)
|
||||||
|
static constexpr auto s_interval_second = 60 * 5;
|
||||||
|
static constexpr auto s_report_url = "http://report.zlmediakit.com:8888/index/api/report";
|
||||||
|
extern const char kServerName[];
|
||||||
|
|
||||||
|
static std::string httpBody() {
|
||||||
|
HttpArgs args;
|
||||||
|
auto &os = args["os"];
|
||||||
|
#if defined(_WIN32)
|
||||||
|
os = "windows";
|
||||||
|
#elif defined(__ANDROID__)
|
||||||
|
os = "android";
|
||||||
|
#elif defined(__linux__)
|
||||||
|
os = "linux";
|
||||||
|
#elif defined(OS_IPHONE)
|
||||||
|
os = "ios";
|
||||||
|
#elif defined(__MACH__)
|
||||||
|
os = "macos";
|
||||||
|
#else
|
||||||
|
os = "unknow";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
auto &arch = args["arch"];
|
||||||
|
#if defined(__i386__)
|
||||||
|
arch = "x86";
|
||||||
|
#elif defined(__x86_64__) || defined(__amd64__)
|
||||||
|
arch = "x86_64";
|
||||||
|
#elif defined(__arm__)
|
||||||
|
arch = "arm";
|
||||||
|
#elif defined(__arm64__)
|
||||||
|
arch = "arm64";
|
||||||
|
#elif defined(__loognarch__)
|
||||||
|
arch = "loognarch";
|
||||||
|
#elif defined(__riscv)
|
||||||
|
arch = "riscv";
|
||||||
|
#elif defined(__mipsl__)
|
||||||
|
arch = "mipsl";
|
||||||
|
#else
|
||||||
|
arch = "unknow";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
auto &compiler = args["compiler"];
|
||||||
|
#if defined(__clang__)
|
||||||
|
compiler = "clang";
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
compiler = "msvc";
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
|
compiler = "mingw";
|
||||||
|
#elif defined(__CYGWIN__)
|
||||||
|
compiler = "cygwin";
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
compiler = "gcc";
|
||||||
|
#elif defined(__ICC__)
|
||||||
|
compiler = "icc";
|
||||||
|
#else
|
||||||
|
compiler = "unknow";
|
||||||
|
#endif
|
||||||
|
args["cplusplus"] = __cplusplus;
|
||||||
|
args["build_date"] = __DATE__;
|
||||||
|
args["version"] = kServerName;
|
||||||
|
args["exe_name"] = exeName();
|
||||||
|
|
||||||
|
#if NDEBUG
|
||||||
|
args["release"] = 1;
|
||||||
|
#else
|
||||||
|
args["release"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_RTPPROXY
|
||||||
|
args["rtp_proxy"] = 1;
|
||||||
|
#else
|
||||||
|
args["rtp_proxy"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_HLS
|
||||||
|
args["hls"] = 1;
|
||||||
|
#else
|
||||||
|
args["hls"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_WEBRTC
|
||||||
|
args["webrtc"] = 1;
|
||||||
|
#else
|
||||||
|
args["webrtc"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_SCTP
|
||||||
|
args["sctp"] = 1;
|
||||||
|
#else
|
||||||
|
args["sctp"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_SRT
|
||||||
|
args["srt"] = 1;
|
||||||
|
#else
|
||||||
|
args["srt"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_MP4
|
||||||
|
args["mp4"] = 1;
|
||||||
|
#else
|
||||||
|
args["mp4"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_OPENSSL
|
||||||
|
args["openssl"] = 1;
|
||||||
|
#else
|
||||||
|
args["openssl"] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
args["rand_str"] = makeRandStr(32);
|
||||||
|
for (auto &pr : mINI::Instance()) {
|
||||||
|
// 只获取转协议相关配置
|
||||||
|
if (pr.first.find("protocol.") == 0) {
|
||||||
|
args[pr.first] = pr.second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return args.make();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sendReport() {
|
||||||
|
static HttpRequester::Ptr requester = std::make_shared<HttpRequester>();
|
||||||
|
// 获取一次静态信息,定时上报主要方便统计在线实例个数
|
||||||
|
static auto body = httpBody();
|
||||||
|
|
||||||
|
requester->setMethod("POST");
|
||||||
|
requester->setBody(body);
|
||||||
|
requester->startRequester(s_report_url, nullptr, s_interval_second);
|
||||||
|
}
|
||||||
|
|
||||||
|
static toolkit::onceToken s_token([]() {
|
||||||
|
NoticeCenter::Instance().addListener(nullptr, EventPollerPool::kOnStarted, [](EventPollerPool &pool, size_t &size) {
|
||||||
|
pool.getPoller()->doDelayTask(s_interval_second * 1000, []() {
|
||||||
|
sendReport();
|
||||||
|
return s_interval_second * 1000;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace mediakit
|
} // namespace mediakit
|
||||||
|
Loading…
Reference in New Issue
Block a user