27 std::cout <<
"=== Collector Factory Example ===" << std::endl;
31 std::cout <<
"\n1. Getting factory singleton instance..." << std::endl;
36 std::cout <<
" Factory instance obtained" << std::endl;
37 std::cout <<
" Same instance: " << (&factory == &factory2 ?
"Yes" :
"No") << std::endl;
40 std::cout <<
"\n2. Listing registered collectors..." << std::endl;
42 auto registered = factory.get_registered_collectors();
43 std::cout <<
" Registered collectors (" << registered.size() <<
"):" << std::endl;
44 for (
const auto& name : registered) {
45 std::cout <<
" - " << name << std::endl;
49 std::cout <<
"\n3. Checking specific collector registration..." << std::endl;
51 std::vector<std::string> check_collectors = {
52 "system_resource_collector",
53 "network_metrics_collector",
54 "process_metrics_collector",
55 "platform_metrics_collector",
56 "nonexistent_collector"
59 for (
const auto& name : check_collectors) {
60 bool is_reg = factory.is_registered(name);
61 std::cout <<
" " << name <<
": " << (is_reg ?
"Registered" :
"Not registered") << std::endl;
65 std::cout <<
"\n4. Creating collectors with configuration..." << std::endl;
69 {
"collect_cpu",
"true"},
70 {
"collect_memory",
"true"}
73 auto sys_result = factory.create(
"system_resource_collector", sys_config);
75 std::cout <<
" ✓ Created: " << sys_result.collector->get_name() << std::endl;
76 std::cout <<
" Health: " << (sys_result.collector->is_healthy() ?
"OK" :
"UNHEALTHY") << std::endl;
78 auto metric_types = sys_result.collector->get_metric_types();
79 std::cout <<
" Metric types: " << metric_types.size() << std::endl;
81 std::cout <<
" ✗ Failed: " << sys_result.error_message << std::endl;
85 std::cout <<
"\n5. Dynamic collector instantiation..." << std::endl;
87 std::vector<std::string> to_create = {
88 "network_metrics_collector",
89 "process_metrics_collector",
90 "platform_metrics_collector"
93 std::vector<std::unique_ptr<collector_interface>> collectors;
95 for (
const auto& name : to_create) {
96 auto result = factory.create(name);
98 std::cout <<
" ✓ Created: " << result.collector->get_name() << std::endl;
99 collectors.push_back(std::move(result.collector));
101 std::cout <<
" ✗ Failed: " << name <<
" - " << result.error_message << std::endl;
105 std::cout <<
" Total collectors created: " << collectors.size() << std::endl;
108 std::cout <<
"\n6. Attempting to create non-existent collector..." << std::endl;
110 auto invalid_result = factory.create(
"nonexistent_collector");
111 if (!invalid_result) {
112 std::cout <<
" Expected failure: " << invalid_result.error_message << std::endl;
115 std::cout <<
"\n=== Example completed successfully ===" << std::endl;
117 }
catch (
const std::exception& e) {
118 std::cerr <<
"Exception: " << e.what() << std::endl;