mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 02:34:26 +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_X264 "Enable x264" OFF)
|
||||
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)
|
||||
|
||||
##############################################################################
|
||||
@ -203,6 +203,10 @@ endif()
|
||||
update_cached_list(MK_LINK_LIBRARIES "")
|
||||
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")
|
||||
include(CheckCXXSourceCompiles)
|
||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/atomic_check.cpp atomic_check_cpp)
|
||||
|
@ -9,6 +9,8 @@
|
||||
*/
|
||||
|
||||
#include "HttpRequester.h"
|
||||
#include "Util/onceToken.h"
|
||||
#include "Util/NoticeCenter.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace toolkit;
|
||||
@ -47,4 +49,147 @@ void HttpRequester::setOnResult(const HttpRequesterResult &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
|
||||
|
Loading…
Reference in New Issue
Block a user