gitextract_c4eu14oz/ ├── .bazelrc ├── .clang-format ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── main.yml ├── .gitignore ├── BUILD ├── CMakeLists.txt ├── LICENSE ├── README.md ├── WORKSPACE ├── bazel/ │ ├── BUILD │ ├── copts.bzl │ ├── fmtlib.BUILD │ ├── osx.tbb.BUILD │ ├── spdlog.BUILD │ ├── tbb.BUILD │ └── third_party_repositories.bzl ├── cmake/ │ ├── common.cmake │ └── third_party.cmake ├── examples/ │ ├── CMakeLists.txt │ ├── abseil/ │ │ ├── BUILD │ │ └── abseil_string.cc │ ├── benchmark/ │ │ ├── BUILD │ │ └── benchamrk_test.cc │ ├── cache/ │ │ ├── BUILD │ │ └── cache_test.cc │ ├── fmt/ │ │ ├── BUILD │ │ └── fmt_test.cc │ ├── gtest/ │ │ ├── BUILD │ │ └── hello_test.cc │ ├── json/ │ │ ├── BUILD │ │ └── nlohmann_json_example.cc │ ├── libevent/ │ │ ├── BUILD │ │ └── libevent_echosrv1.c │ ├── log/ │ │ ├── BUILD │ │ └── log_test.cc │ ├── sentinel-cpp/ │ │ ├── BUILD │ │ ├── basic_concurrency_limit.cc │ │ ├── basic_param_limit.cc │ │ ├── basic_qps_limit.cc │ │ └── basic_system_limit.cc │ └── tbb/ │ ├── BUILD │ └── tbb_test.cc ├── format.sh ├── sentinel-core/ │ ├── BUILD │ ├── circuitbreaker/ │ │ ├── BUILD │ │ ├── circuit_breaker.cc │ │ ├── circuit_breaker.h │ │ ├── error_circuit_breaker.cc │ │ ├── error_circuit_breaker.h │ │ ├── rt_circuit_breaker.cc │ │ ├── rt_circuit_breaker.h │ │ ├── rule.cc │ │ ├── rule.h │ │ ├── rule_manager.cc │ │ ├── rule_manager.h │ │ ├── slot.cc │ │ ├── slot.h │ │ └── slot_test.cc │ ├── common/ │ │ ├── BUILD │ │ ├── constants.h │ │ ├── entry.h │ │ ├── entry_context.cc │ │ ├── entry_context.h │ │ ├── entry_node.h │ │ ├── entry_result.cc │ │ ├── entry_result.h │ │ ├── entry_type.h │ │ ├── global_status.cc │ │ ├── global_status.h │ │ ├── resource_wrapper.h │ │ ├── rule.h │ │ ├── string_resource_wrapper.h │ │ ├── tracer.cc │ │ ├── tracer.h │ │ └── tracer_test.cc │ ├── config/ │ │ ├── BUILD │ │ ├── config_constants.h │ │ ├── local_config.cc │ │ ├── local_config.h │ │ └── local_config_test.cc │ ├── flow/ │ │ ├── BUILD │ │ ├── default_traffic_shaping_calculator.cc │ │ ├── default_traffic_shaping_calculator.h │ │ ├── default_traffic_shaping_checker.cc │ │ ├── default_traffic_shaping_checker.h │ │ ├── flow_rule.cc │ │ ├── flow_rule.h │ │ ├── flow_rule_checker.cc │ │ ├── flow_rule_checker.h │ │ ├── flow_rule_constants.h │ │ ├── flow_rule_manager.cc │ │ ├── flow_rule_manager.h │ │ ├── flow_slot.cc │ │ ├── flow_slot.h │ │ ├── flow_slot_test.cc │ │ ├── throttling_traffic_shaping_checker.cc │ │ ├── throttling_traffic_shaping_checker.h │ │ ├── traffic_shaping_calculator.h │ │ ├── traffic_shaping_checker.h │ │ ├── traffic_shaping_controller.cc │ │ ├── traffic_shaping_controller.h │ │ └── traffic_shaping_controller_test.cc │ ├── init/ │ │ ├── BUILD │ │ ├── init_target.h │ │ ├── init_target_registry.h │ │ └── init_target_registry_test.cc │ ├── log/ │ │ ├── BUILD │ │ ├── block/ │ │ │ ├── BUILD │ │ │ ├── block_log_task.cc │ │ │ ├── block_log_task.h │ │ │ └── block_log_task_test.cc │ │ ├── log_base.cc │ │ ├── log_base.h │ │ ├── log_base_test.cc │ │ ├── logger.cc │ │ ├── logger.h │ │ ├── logger_test.cc │ │ └── metric/ │ │ ├── BUILD │ │ ├── metric_log_task.cc │ │ ├── metric_log_task.h │ │ ├── metric_reader.cc │ │ ├── metric_reader.h │ │ ├── metric_reader_test.cc │ │ ├── metric_searcher.cc │ │ ├── metric_searcher.h │ │ ├── metric_searcher_test.cc │ │ ├── metric_test_utils.h │ │ ├── metric_writer.cc │ │ ├── metric_writer.h │ │ └── metric_writer_test.cc │ ├── param/ │ │ ├── BUILD │ │ ├── param_flow_item.cc │ │ ├── param_flow_item.h │ │ ├── param_flow_rule.cc │ │ ├── param_flow_rule.h │ │ ├── param_flow_rule_checker.cc │ │ ├── param_flow_rule_checker.h │ │ ├── param_flow_rule_constants.h │ │ ├── param_flow_rule_manager.cc │ │ ├── param_flow_rule_manager.h │ │ ├── param_flow_slot.cc │ │ ├── param_flow_slot.h │ │ ├── param_flow_slot_test.cc │ │ └── statistic/ │ │ ├── BUILD │ │ ├── any_cmp.cc │ │ ├── any_cmp.h │ │ ├── any_cmp_test.cc │ │ ├── lru_cache.h │ │ ├── param_bucket.cc │ │ ├── param_bucket.h │ │ ├── param_event.h │ │ ├── param_leap_array.cc │ │ ├── param_leap_array.h │ │ ├── param_leap_array_key.h │ │ ├── param_metric.cc │ │ ├── param_metric.h │ │ ├── param_metric_test.cc │ │ └── scalable_cache.h │ ├── property/ │ │ ├── BUILD │ │ ├── dynamic_sentinel_property.h │ │ ├── dynamic_sentinel_property_test.cc │ │ ├── property_listener.h │ │ └── sentinel_property.h │ ├── public/ │ │ ├── BUILD │ │ ├── sph_u.h │ │ └── sph_u_test.cc │ ├── slot/ │ │ ├── BUILD │ │ ├── base/ │ │ │ ├── BUILD │ │ │ ├── default_slot_chain_impl.cc │ │ │ ├── default_slot_chain_impl.h │ │ │ ├── default_slot_chain_impl_test.cc │ │ │ ├── rule_checker_slot.h │ │ │ ├── slot.h │ │ │ ├── slot_base.h │ │ │ ├── slot_chain.h │ │ │ ├── stats_slot.h │ │ │ ├── token_result.cc │ │ │ └── token_result.h │ │ ├── global_slot_chain.cc │ │ ├── global_slot_chain.h │ │ ├── log_slot.cc │ │ ├── log_slot.h │ │ ├── resource_node_builder_slot.cc │ │ ├── resource_node_builder_slot.h │ │ ├── resource_node_builder_slot_test.cc │ │ ├── statistic_slot.cc │ │ ├── statistic_slot.h │ │ └── statistic_slot_test.cc │ ├── statistic/ │ │ ├── base/ │ │ │ ├── BUILD │ │ │ ├── bucket_leap_array.cc │ │ │ ├── bucket_leap_array.h │ │ │ ├── bucket_leap_array_test.cc │ │ │ ├── leap_array.h │ │ │ ├── metric.h │ │ │ ├── metric_bucket.cc │ │ │ ├── metric_bucket.h │ │ │ ├── metric_event.h │ │ │ ├── metric_item.cc │ │ │ ├── metric_item.h │ │ │ ├── metric_item_test.cc │ │ │ ├── sliding_window_metric.cc │ │ │ ├── sliding_window_metric.h │ │ │ ├── sliding_window_metric_test.cc │ │ │ ├── stat_config.h │ │ │ ├── stat_config_manager.cc │ │ │ ├── stat_config_manager.h │ │ │ └── window_wrap.h │ │ └── node/ │ │ ├── BUILD │ │ ├── cluster_node.cc │ │ ├── cluster_node.h │ │ ├── node.h │ │ ├── resource_node_storage.cc │ │ ├── resource_node_storage.h │ │ ├── statistic_node.cc │ │ └── statistic_node.h │ ├── system/ │ │ ├── BUILD │ │ ├── system_rule.cc │ │ ├── system_rule.h │ │ ├── system_rule_manager.cc │ │ ├── system_rule_manager.h │ │ ├── system_slot.cc │ │ ├── system_slot.h │ │ ├── system_slot_mock.h │ │ ├── system_slot_test.cc │ │ ├── system_status_listener.cc │ │ ├── system_status_listener.h │ │ └── system_status_listener_test.cc │ ├── test/ │ │ └── mock/ │ │ ├── common/ │ │ │ ├── BUILD │ │ │ ├── mock.cc │ │ │ └── mock.h │ │ ├── flow/ │ │ │ ├── BUILD │ │ │ ├── mock.cc │ │ │ └── mock.h │ │ ├── init/ │ │ │ ├── BUILD │ │ │ └── mock.h │ │ ├── property/ │ │ │ ├── BUILD │ │ │ ├── mock.cc │ │ │ └── mock.h │ │ ├── slot/ │ │ │ ├── BUILD │ │ │ ├── mock.cc │ │ │ └── mock.h │ │ └── statistic/ │ │ ├── base/ │ │ │ ├── BUILD │ │ │ ├── mock.cc │ │ │ └── mock.h │ │ └── node/ │ │ ├── BUILD │ │ ├── mock.cc │ │ └── mock.h │ ├── transport/ │ │ ├── BUILD │ │ ├── command/ │ │ │ ├── BUILD │ │ │ ├── command_handler.h │ │ │ ├── command_request.cc │ │ │ ├── command_request.h │ │ │ ├── command_request_test.cc │ │ │ ├── command_response.h │ │ │ ├── handler/ │ │ │ │ ├── BUILD │ │ │ │ ├── fetch_cluster_node_handler.cc │ │ │ │ ├── fetch_cluster_node_handler.h │ │ │ │ ├── fetch_cluster_node_handler_test.cc │ │ │ │ ├── fetch_metric_log_handler.cc │ │ │ │ ├── fetch_metric_log_handler.h │ │ │ │ ├── get_switch_status_handler.cc │ │ │ │ ├── get_switch_status_handler.h │ │ │ │ ├── set_switch_status_handler.cc │ │ │ │ ├── set_switch_status_handler.h │ │ │ │ ├── set_switch_status_handler_test.cc │ │ │ │ ├── version_handler.cc │ │ │ │ ├── version_handler.h │ │ │ │ └── vo/ │ │ │ │ ├── BUILD │ │ │ │ ├── statistic_node_vo.cc │ │ │ │ └── statistic_node_vo.h │ │ │ ├── http_command_center.cc │ │ │ ├── http_command_center.h │ │ │ ├── http_command_utils.cc │ │ │ ├── http_command_utils.h │ │ │ ├── http_server.cc │ │ │ ├── http_server.h │ │ │ ├── http_server_init_target.cc │ │ │ └── http_server_init_target.h │ │ ├── common/ │ │ │ ├── BUILD │ │ │ ├── event_loop_thread.cc │ │ │ ├── event_loop_thread.h │ │ │ └── event_loop_thread_test.cc │ │ └── constants.h │ └── utils/ │ ├── BUILD │ ├── file_utils.cc │ ├── file_utils.h │ ├── macros.h │ ├── time_utils.cc │ ├── time_utils.h │ ├── utils.cc │ └── utils.h ├── sentinel-datasource-extension/ │ ├── datasource/ │ │ ├── BUILD │ │ ├── abstract_readable_data_source.h │ │ ├── abstract_readable_data_source_unittests.cc │ │ ├── converter.h │ │ └── readable_data_source.h │ └── test/ │ └── mock/ │ └── datasource/ │ ├── BUILD │ ├── mock.cc │ └── mock.h ├── tests/ │ ├── BUILD │ └── tsan-flow.cc └── third_party/ └── nlohmann/ ├── BUILD └── json.hpp