NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
health_check.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_HTTP_HEALTH_CHECK_HPP__
2#define NEFORCE_NETWORK_HTTP_HEALTH_CHECK_HPP__
3
8
10NEFORCE_BEGIN_NAMESPACE__
11NEFORCE_BEGIN_HTTP__
12
17
29class NEFORCE_API health_check_filter final : public http_filter {
30public:
31 string path{"/healthz"};
32 bool show_details{true};
33 bool enabled{true};
34
35 using check_callback = function<bool()>;
36
37 health_check_filter() = default;
38
44 void add_check(const string& name, check_callback check) { checks_[name] = move(check); }
45
46 void remove_check(const string& name) { checks_.erase(name); }
47
48 bool pre_filter(http_request& request, http_response& response) override;
49 void do_filter(http_request& /*request*/, http_response& /*response*/) override {}
50 NEFORCE_NODISCARD string name() const override { return "health_check_filter"; }
51
52private:
54 int64_t start_time_ms_{0};
55
56 pair<string, bool> build_health_json();
57};
58
59// TODO: Metrics collection — request count, latency percentiles (p50/p95/p99), error rate, active connections gauge
60// TODO: Prometheus exposition format — /metrics endpoint with Prometheus text format for scraping
61// TODO: OpenTelemetry tracing — distributed trace context propagation (W3C TraceContext / B3), span export to OTLP/Jaeger/Zipkin
62// TODO: Admin endpoints — /actuator/loggers (dynamic log level), /actuator/threaddump, /actuator/env
63 // HTTP
65
66NEFORCE_END_HTTP__
67NEFORCE_END_NAMESPACE__
68#endif // NEFORCE_NETWORK_HTTP_HEALTH_CHECK_HPP__
函数包装器主模板声明
bool pre_filter(http_request &request, http_response &response) override
预处理方法
void add_check(const string &name, check_callback check)
注册一个健康检查组件的回调
string name() const override
获取过滤器名称
bool show_details
是否展示详细检查结果
void do_filter(http_request &, http_response &) override
核心过滤方法
long int64_t
64位有符号整数类型
http_server_response http_response
HTTP响应类型别名
http_server_request http_request
HTTP请求类型别名
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
HTTP过滤器链实现
存储两个值的元组对