tasker-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +443 -0
  4. data/Rakefile +10 -0
  5. data/app/controllers/tasker/analytics_controller.rb +179 -0
  6. data/app/controllers/tasker/application_controller.rb +45 -0
  7. data/app/controllers/tasker/graphql_controller.rb +193 -0
  8. data/app/controllers/tasker/handlers_controller.rb +217 -0
  9. data/app/controllers/tasker/health_controller.rb +229 -0
  10. data/app/controllers/tasker/metrics_controller.rb +111 -0
  11. data/app/controllers/tasker/page_sort.rb +97 -0
  12. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  13. data/app/controllers/tasker/tasks_controller.rb +123 -0
  14. data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
  15. data/app/graphql/examples/all_tasks.graphql +22 -0
  16. data/app/graphql/examples/pending_tasks.graphql +23 -0
  17. data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
  18. data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
  19. data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
  20. data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
  21. data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
  22. data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
  23. data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
  24. data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
  25. data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
  26. data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
  27. data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
  28. data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
  29. data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
  30. data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
  31. data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
  32. data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
  33. data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
  34. data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
  35. data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
  36. data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
  37. data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
  38. data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
  39. data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
  40. data/app/graphql/tasker/graph_ql_types.rb +42 -0
  41. data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
  42. data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
  43. data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
  44. data/app/graphql/tasker/mutations/create_task.rb +52 -0
  45. data/app/graphql/tasker/mutations/update_step.rb +36 -0
  46. data/app/graphql/tasker/mutations/update_task.rb +41 -0
  47. data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
  48. data/app/graphql/tasker/queries/all_tasks.rb +23 -0
  49. data/app/graphql/tasker/queries/base_query.rb +9 -0
  50. data/app/graphql/tasker/queries/helpers.rb +16 -0
  51. data/app/graphql/tasker/queries/one_step.rb +24 -0
  52. data/app/graphql/tasker/queries/one_task.rb +18 -0
  53. data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
  54. data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
  55. data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
  56. data/app/jobs/tasker/application_job.rb +8 -0
  57. data/app/jobs/tasker/metrics_export_job.rb +252 -0
  58. data/app/jobs/tasker/task_runner_job.rb +224 -0
  59. data/app/models/tasker/annotation_type.rb +26 -0
  60. data/app/models/tasker/application_record.rb +70 -0
  61. data/app/models/tasker/dependent_system.rb +26 -0
  62. data/app/models/tasker/dependent_system_object_map.rb +64 -0
  63. data/app/models/tasker/diagram/edge.rb +106 -0
  64. data/app/models/tasker/diagram/flowchart.rb +137 -0
  65. data/app/models/tasker/diagram/node.rb +99 -0
  66. data/app/models/tasker/named_step.rb +41 -0
  67. data/app/models/tasker/named_task.rb +121 -0
  68. data/app/models/tasker/named_tasks_named_step.rb +82 -0
  69. data/app/models/tasker/step_dag_relationship.rb +65 -0
  70. data/app/models/tasker/step_readiness_status.rb +59 -0
  71. data/app/models/tasker/task.rb +424 -0
  72. data/app/models/tasker/task_annotation.rb +36 -0
  73. data/app/models/tasker/task_diagram.rb +332 -0
  74. data/app/models/tasker/task_execution_context.rb +29 -0
  75. data/app/models/tasker/task_namespace.rb +41 -0
  76. data/app/models/tasker/task_transition.rb +235 -0
  77. data/app/models/tasker/workflow_step.rb +461 -0
  78. data/app/models/tasker/workflow_step_edge.rb +94 -0
  79. data/app/models/tasker/workflow_step_transition.rb +434 -0
  80. data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
  81. data/app/serializers/tasker/handler_serializer.rb +109 -0
  82. data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
  83. data/app/serializers/tasker/task_serializer.rb +168 -0
  84. data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
  85. data/app/services/tasker/analytics_service.rb +409 -0
  86. data/app/views/tasker/task/_diagram.html.erb +32 -0
  87. data/config/initializers/dry_struct.rb +11 -0
  88. data/config/initializers/statesman.rb +6 -0
  89. data/config/initializers/tasker_orchestration.rb +17 -0
  90. data/config/initializers/time_formats.rb +4 -0
  91. data/config/routes.rb +34 -0
  92. data/config/tasker/subscriptions/example_integrations.yml +67 -0
  93. data/config/tasker/system_events.yml +305 -0
  94. data/db/functions/calculate_dependency_levels_v01.sql +45 -0
  95. data/db/functions/get_analytics_metrics_v01.sql +137 -0
  96. data/db/functions/get_slowest_steps_v01.sql +82 -0
  97. data/db/functions/get_slowest_tasks_v01.sql +96 -0
  98. data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
  99. data/db/functions/get_step_readiness_status_v01.sql +139 -0
  100. data/db/functions/get_system_health_counts_v01.sql +108 -0
  101. data/db/functions/get_task_execution_context_v01.sql +108 -0
  102. data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
  103. data/db/init/schema.sql +2277 -0
  104. data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
  105. data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
  106. data/docs/APPLICATION_GENERATOR.md +384 -0
  107. data/docs/AUTH.md +1780 -0
  108. data/docs/CIRCUIT_BREAKER.md +224 -0
  109. data/docs/DEVELOPER_GUIDE.md +2665 -0
  110. data/docs/EVENT_SYSTEM.md +637 -0
  111. data/docs/EXECUTION_CONFIGURATION.md +341 -0
  112. data/docs/FLOW_CHART.md +149 -0
  113. data/docs/HEALTH.md +542 -0
  114. data/docs/METRICS.md +731 -0
  115. data/docs/OPTIMIZATION_PLAN.md +1479 -0
  116. data/docs/OVERVIEW.md +552 -0
  117. data/docs/QUICK_START.md +270 -0
  118. data/docs/REGISTRY_SYSTEMS.md +373 -0
  119. data/docs/REST_API.md +632 -0
  120. data/docs/ROADMAP.md +221 -0
  121. data/docs/SQL_FUNCTIONS.md +1408 -0
  122. data/docs/TASK_DIAGRAM.md +252 -0
  123. data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
  124. data/docs/TELEMETRY.md +795 -0
  125. data/docs/TROUBLESHOOTING.md +756 -0
  126. data/docs/TaskHandlerGenerator.html +255 -0
  127. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
  128. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
  129. data/docs/Tasker/Analysis.html +117 -0
  130. data/docs/Tasker/AnalyticsController.html +450 -0
  131. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
  132. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
  133. data/docs/Tasker/AnalyticsService.html +2221 -0
  134. data/docs/Tasker/AnnotationType.html +137 -0
  135. data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
  136. data/docs/Tasker/ApplicationController.html +147 -0
  137. data/docs/Tasker/ApplicationJob.html +128 -0
  138. data/docs/Tasker/ApplicationRecord.html +378 -0
  139. data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
  140. data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
  141. data/docs/Tasker/Authentication/Coordinator.html +242 -0
  142. data/docs/Tasker/Authentication/Interface.html +560 -0
  143. data/docs/Tasker/Authentication/InterfaceError.html +124 -0
  144. data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
  145. data/docs/Tasker/Authentication.html +119 -0
  146. data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
  147. data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
  148. data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
  149. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
  150. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
  151. data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
  152. data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
  153. data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
  154. data/docs/Tasker/Authorization.html +582 -0
  155. data/docs/Tasker/CacheCapabilities.html +167 -0
  156. data/docs/Tasker/CacheStrategy.html +1297 -0
  157. data/docs/Tasker/Concerns/Authenticatable.html +116 -0
  158. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
  159. data/docs/Tasker/Concerns/Authorizable.html +816 -0
  160. data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
  161. data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
  162. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
  163. data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
  164. data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
  165. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
  166. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
  167. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
  168. data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
  169. data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
  170. data/docs/Tasker/Concerns.html +117 -0
  171. data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
  172. data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
  173. data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
  174. data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
  175. data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
  176. data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
  177. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
  178. data/docs/Tasker/Configuration.html +1669 -0
  179. data/docs/Tasker/ConfigurationError.html +143 -0
  180. data/docs/Tasker/ConfiguredTask.html +514 -0
  181. data/docs/Tasker/Constants/EventDefinitions.html +590 -0
  182. data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
  183. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
  184. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
  185. data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
  186. data/docs/Tasker/Constants/RegistryEvents.html +285 -0
  187. data/docs/Tasker/Constants/StepEvents.html +177 -0
  188. data/docs/Tasker/Constants/TaskEvents.html +167 -0
  189. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
  190. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
  191. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
  192. data/docs/Tasker/Constants/TaskExecution.html +126 -0
  193. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
  194. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
  195. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
  196. data/docs/Tasker/Constants/TaskFinalization.html +126 -0
  197. data/docs/Tasker/Constants/TaskStatuses.html +223 -0
  198. data/docs/Tasker/Constants/TestEvents.html +163 -0
  199. data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
  200. data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
  201. data/docs/Tasker/Constants.html +561 -0
  202. data/docs/Tasker/DependentSystem.html +137 -0
  203. data/docs/Tasker/DependentSystemObjectMap.html +250 -0
  204. data/docs/Tasker/DetectorRegistry.html +598 -0
  205. data/docs/Tasker/Diagram/Edge.html +1191 -0
  206. data/docs/Tasker/Diagram/Flowchart.html +1539 -0
  207. data/docs/Tasker/Diagram/Node.html +1165 -0
  208. data/docs/Tasker/Diagram.html +117 -0
  209. data/docs/Tasker/Engine.html +215 -0
  210. data/docs/Tasker/Error.html +139 -0
  211. data/docs/Tasker/Events/Bus.html +1226 -0
  212. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
  213. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
  214. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
  215. data/docs/Tasker/Events/Catalog.html +1291 -0
  216. data/docs/Tasker/Events/CustomRegistry.html +943 -0
  217. data/docs/Tasker/Events/DefinitionLoader.html +575 -0
  218. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
  219. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
  220. data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
  221. data/docs/Tasker/Events/Publisher.html +365 -0
  222. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
  223. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
  224. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
  225. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
  226. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
  227. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
  228. data/docs/Tasker/Events/Subscribers.html +117 -0
  229. data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
  230. data/docs/Tasker/Events.html +294 -0
  231. data/docs/Tasker/EventsGenerator.html +459 -0
  232. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
  233. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
  234. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
  235. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
  236. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
  237. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
  238. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
  239. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
  240. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
  241. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
  242. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
  243. data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
  244. data/docs/Tasker/Functions.html +117 -0
  245. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
  246. data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
  247. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
  248. data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
  249. data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
  250. data/docs/Tasker/Generators.html +117 -0
  251. data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
  252. data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
  253. data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
  254. data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
  255. data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
  256. data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
  257. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
  258. data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
  259. data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
  260. data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
  261. data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
  262. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
  263. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
  264. data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
  265. data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
  266. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
  267. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
  268. data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
  269. data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
  270. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
  271. data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
  272. data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
  273. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
  274. data/docs/Tasker/GraphQLTypes.html +130 -0
  275. data/docs/Tasker/GraphqlController.html +251 -0
  276. data/docs/Tasker/HandlerFactory.html +1518 -0
  277. data/docs/Tasker/HandlerSerializer.html +682 -0
  278. data/docs/Tasker/HandlersController.html +574 -0
  279. data/docs/Tasker/HashIdentityStrategy.html +278 -0
  280. data/docs/Tasker/Health/ReadinessChecker.html +712 -0
  281. data/docs/Tasker/Health/StatusChecker.html +653 -0
  282. data/docs/Tasker/Health.html +117 -0
  283. data/docs/Tasker/HealthController.html +523 -0
  284. data/docs/Tasker/IdentityStrategy.html +276 -0
  285. data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
  286. data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
  287. data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
  288. data/docs/Tasker/LifecycleEvents/Events.html +204 -0
  289. data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
  290. data/docs/Tasker/LifecycleEvents.html +799 -0
  291. data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
  292. data/docs/Tasker/Logging.html +115 -0
  293. data/docs/Tasker/MetricsController.html +293 -0
  294. data/docs/Tasker/MetricsExportJob.html +414 -0
  295. data/docs/Tasker/Mutations/BaseMutation.html +128 -0
  296. data/docs/Tasker/Mutations/CancelStep.html +219 -0
  297. data/docs/Tasker/Mutations/CancelTask.html +221 -0
  298. data/docs/Tasker/Mutations/CreateTask.html +243 -0
  299. data/docs/Tasker/Mutations/UpdateStep.html +243 -0
  300. data/docs/Tasker/Mutations/UpdateTask.html +243 -0
  301. data/docs/Tasker/Mutations.html +117 -0
  302. data/docs/Tasker/NamedStep.html +216 -0
  303. data/docs/Tasker/NamedTask.html +910 -0
  304. data/docs/Tasker/NamedTasksNamedStep.html +435 -0
  305. data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
  306. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
  307. data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
  308. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
  309. data/docs/Tasker/Orchestration/Coordinator.html +641 -0
  310. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
  311. data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
  312. data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
  313. data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
  314. data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
  315. data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
  316. data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
  317. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
  318. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
  319. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
  320. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
  321. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
  322. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
  323. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
  324. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
  325. data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
  326. data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
  327. data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
  328. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
  329. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
  330. data/docs/Tasker/Orchestration.html +130 -0
  331. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
  332. data/docs/Tasker/PageSort.html +247 -0
  333. data/docs/Tasker/PermanentError.html +518 -0
  334. data/docs/Tasker/ProceduralError.html +147 -0
  335. data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
  336. data/docs/Tasker/Queries/AllTasks.html +221 -0
  337. data/docs/Tasker/Queries/BaseQuery.html +128 -0
  338. data/docs/Tasker/Queries/Helpers.html +187 -0
  339. data/docs/Tasker/Queries/OneStep.html +225 -0
  340. data/docs/Tasker/Queries/OneTask.html +217 -0
  341. data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
  342. data/docs/Tasker/Queries/TasksByStatus.html +233 -0
  343. data/docs/Tasker/Queries.html +119 -0
  344. data/docs/Tasker/Railtie.html +124 -0
  345. data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
  346. data/docs/Tasker/Registry/EventPublisher.html +667 -0
  347. data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
  348. data/docs/Tasker/Registry/RegistrationError.html +132 -0
  349. data/docs/Tasker/Registry/RegistryError.html +139 -0
  350. data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
  351. data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
  352. data/docs/Tasker/Registry/ValidationError.html +132 -0
  353. data/docs/Tasker/Registry.html +119 -0
  354. data/docs/Tasker/RetryableError.html +515 -0
  355. data/docs/Tasker/StateMachine/Compatibility.html +282 -0
  356. data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
  357. data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
  358. data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
  359. data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
  360. data/docs/Tasker/StateMachine.html +602 -0
  361. data/docs/Tasker/StepDagRelationship.html +657 -0
  362. data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
  363. data/docs/Tasker/StepHandler/Api.html +884 -0
  364. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
  365. data/docs/Tasker/StepHandler/Base.html +970 -0
  366. data/docs/Tasker/StepHandler.html +119 -0
  367. data/docs/Tasker/StepReadinessStatus.html +836 -0
  368. data/docs/Tasker/Task.html +2575 -0
  369. data/docs/Tasker/TaskAnnotation.html +137 -0
  370. data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
  371. data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
  372. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
  373. data/docs/Tasker/TaskBuilder.html +764 -0
  374. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
  375. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
  376. data/docs/Tasker/TaskDiagram.html +548 -0
  377. data/docs/Tasker/TaskDiagramsController.html +240 -0
  378. data/docs/Tasker/TaskExecutionContext.html +469 -0
  379. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
  380. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
  381. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
  382. data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
  383. data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
  384. data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
  385. data/docs/Tasker/TaskHandler.html +271 -0
  386. data/docs/Tasker/TaskNamespace.html +312 -0
  387. data/docs/Tasker/TaskRunnerJob.html +406 -0
  388. data/docs/Tasker/TaskSerializer.html +474 -0
  389. data/docs/Tasker/TaskTransition.html +1517 -0
  390. data/docs/Tasker/TaskWorkflowSummary.html +988 -0
  391. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
  392. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
  393. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
  394. data/docs/Tasker/TaskerRailsSchema.html +384 -0
  395. data/docs/Tasker/TasksController.html +595 -0
  396. data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
  397. data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
  398. data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
  399. data/docs/Tasker/Telemetry/Events.html +115 -0
  400. data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
  401. data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
  402. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
  403. data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
  404. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
  405. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
  406. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
  407. data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
  408. data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
  409. data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
  410. data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
  411. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
  412. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
  413. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
  414. data/docs/Tasker/Telemetry/Plugins.html +117 -0
  415. data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
  416. data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
  417. data/docs/Tasker/Telemetry.html +130 -0
  418. data/docs/Tasker/Types/AuthConfig.html +886 -0
  419. data/docs/Tasker/Types/BackoffConfig.html +1063 -0
  420. data/docs/Tasker/Types/BaseConfig.html +227 -0
  421. data/docs/Tasker/Types/CacheConfig.html +1731 -0
  422. data/docs/Tasker/Types/DatabaseConfig.html +388 -0
  423. data/docs/Tasker/Types/DependencyGraph.html +526 -0
  424. data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
  425. data/docs/Tasker/Types/EngineConfig.html +1181 -0
  426. data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
  427. data/docs/Tasker/Types/GraphEdge.html +517 -0
  428. data/docs/Tasker/Types/GraphMetadata.html +781 -0
  429. data/docs/Tasker/Types/GraphNode.html +694 -0
  430. data/docs/Tasker/Types/HealthConfig.html +784 -0
  431. data/docs/Tasker/Types/StepSequence.html +353 -0
  432. data/docs/Tasker/Types/StepTemplate.html +1193 -0
  433. data/docs/Tasker/Types/TaskRequest.html +1179 -0
  434. data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
  435. data/docs/Tasker/Types.html +154 -0
  436. data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
  437. data/docs/Tasker/WorkflowStep.html +2724 -0
  438. data/docs/Tasker/WorkflowStepEdge.html +304 -0
  439. data/docs/Tasker/WorkflowStepSerializer.html +305 -0
  440. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
  441. data/docs/Tasker/WorkflowStepTransition.html +2201 -0
  442. data/docs/Tasker/WorkflowStepsController.html +462 -0
  443. data/docs/Tasker.html +452 -0
  444. data/docs/VISION.md +584 -0
  445. data/docs/WHY.md +21 -0
  446. data/docs/_index.html +2375 -0
  447. data/docs/class_list.html +54 -0
  448. data/docs/css/common.css +1 -0
  449. data/docs/css/full_list.css +58 -0
  450. data/docs/css/style.css +503 -0
  451. data/docs/events/migration_plan_outcomes.md +80 -0
  452. data/docs/file.README.html +541 -0
  453. data/docs/file_list.html +59 -0
  454. data/docs/frames.html +22 -0
  455. data/docs/index.html +541 -0
  456. data/docs/js/app.js +344 -0
  457. data/docs/js/full_list.js +242 -0
  458. data/docs/js/jquery.js +4 -0
  459. data/docs/method_list.html +9182 -0
  460. data/docs/top-level-namespace.html +110 -0
  461. data/lib/generators/tasker/authenticator_generator.rb +301 -0
  462. data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
  463. data/lib/generators/tasker/events_generator.rb +91 -0
  464. data/lib/generators/tasker/subscriber_generator.rb +107 -0
  465. data/lib/generators/tasker/task_handler_generator.rb +138 -0
  466. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
  467. data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
  468. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
  469. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
  470. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
  471. data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
  472. data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
  473. data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
  474. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
  475. data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
  476. data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
  477. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
  478. data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
  479. data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
  480. data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
  481. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
  482. data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
  483. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
  484. data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
  485. data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
  486. data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
  487. data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
  488. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
  489. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
  490. data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
  491. data/lib/tasker/authentication/coordinator.rb +78 -0
  492. data/lib/tasker/authentication/errors.rb +9 -0
  493. data/lib/tasker/authentication/interface.rb +36 -0
  494. data/lib/tasker/authentication/none_authenticator.rb +26 -0
  495. data/lib/tasker/authorization/base_coordinator.rb +112 -0
  496. data/lib/tasker/authorization/errors.rb +26 -0
  497. data/lib/tasker/authorization/resource_constants.rb +74 -0
  498. data/lib/tasker/authorization/resource_registry.rb +143 -0
  499. data/lib/tasker/authorization.rb +75 -0
  500. data/lib/tasker/cache_capabilities.rb +131 -0
  501. data/lib/tasker/cache_strategy.rb +469 -0
  502. data/lib/tasker/concerns/authenticatable.rb +41 -0
  503. data/lib/tasker/concerns/authorizable.rb +204 -0
  504. data/lib/tasker/concerns/controller_authorizable.rb +124 -0
  505. data/lib/tasker/concerns/event_publisher.rb +716 -0
  506. data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
  507. data/lib/tasker/concerns/state_machine_base.rb +218 -0
  508. data/lib/tasker/concerns/structured_logging.rb +387 -0
  509. data/lib/tasker/configuration.rb +325 -0
  510. data/lib/tasker/constants/event_definitions.rb +147 -0
  511. data/lib/tasker/constants/registry_events.rb +54 -0
  512. data/lib/tasker/constants.rb +417 -0
  513. data/lib/tasker/engine.rb +90 -0
  514. data/lib/tasker/errors.rb +90 -0
  515. data/lib/tasker/events/catalog.rb +432 -0
  516. data/lib/tasker/events/custom_registry.rb +175 -0
  517. data/lib/tasker/events/definition_loader.rb +199 -0
  518. data/lib/tasker/events/event_payload_builder.rb +461 -0
  519. data/lib/tasker/events/publisher.rb +149 -0
  520. data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
  521. data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
  522. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
  523. data/lib/tasker/events/subscription_loader.rb +161 -0
  524. data/lib/tasker/events.rb +37 -0
  525. data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
  526. data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
  527. data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
  528. data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
  529. data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
  530. data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
  531. data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
  532. data/lib/tasker/functions/function_wrapper.rb +42 -0
  533. data/lib/tasker/functions.rb +12 -0
  534. data/lib/tasker/handler_factory.rb +322 -0
  535. data/lib/tasker/health/readiness_checker.rb +186 -0
  536. data/lib/tasker/health/status_checker.rb +203 -0
  537. data/lib/tasker/identity_strategy.rb +38 -0
  538. data/lib/tasker/logging/correlation_id_generator.rb +120 -0
  539. data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
  540. data/lib/tasker/orchestration/connection_builder.rb +122 -0
  541. data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
  542. data/lib/tasker/orchestration/coordinator.rb +119 -0
  543. data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
  544. data/lib/tasker/orchestration/plugin_integration.rb +124 -0
  545. data/lib/tasker/orchestration/response_processor.rb +168 -0
  546. data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
  547. data/lib/tasker/orchestration/step_executor.rb +941 -0
  548. data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
  549. data/lib/tasker/orchestration/task_finalizer.rb +564 -0
  550. data/lib/tasker/orchestration/task_initializer.rb +140 -0
  551. data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
  552. data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
  553. data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
  554. data/lib/tasker/orchestration.rb +45 -0
  555. data/lib/tasker/railtie.rb +9 -0
  556. data/lib/tasker/registry/base_registry.rb +177 -0
  557. data/lib/tasker/registry/event_publisher.rb +91 -0
  558. data/lib/tasker/registry/interface_validator.rb +140 -0
  559. data/lib/tasker/registry/statistics_collector.rb +381 -0
  560. data/lib/tasker/registry/subscriber_registry.rb +285 -0
  561. data/lib/tasker/registry.rb +22 -0
  562. data/lib/tasker/state_machine/step_state_machine.rb +508 -0
  563. data/lib/tasker/state_machine/task_state_machine.rb +192 -0
  564. data/lib/tasker/state_machine.rb +83 -0
  565. data/lib/tasker/step_handler/api.rb +410 -0
  566. data/lib/tasker/step_handler/base.rb +206 -0
  567. data/lib/tasker/task_builder.rb +432 -0
  568. data/lib/tasker/task_handler/class_methods.rb +324 -0
  569. data/lib/tasker/task_handler/instance_methods.rb +293 -0
  570. data/lib/tasker/task_handler/step_group.rb +182 -0
  571. data/lib/tasker/task_handler.rb +43 -0
  572. data/lib/tasker/telemetry/event_mapping.rb +126 -0
  573. data/lib/tasker/telemetry/event_router.rb +318 -0
  574. data/lib/tasker/telemetry/events/export_events.rb +38 -0
  575. data/lib/tasker/telemetry/export_coordinator.rb +497 -0
  576. data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
  577. data/lib/tasker/telemetry/log_backend.rb +224 -0
  578. data/lib/tasker/telemetry/metric_types.rb +368 -0
  579. data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
  580. data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
  581. data/lib/tasker/telemetry/plugin_registry.rb +333 -0
  582. data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
  583. data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
  584. data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
  585. data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
  586. data/lib/tasker/telemetry/trace_backend.rb +186 -0
  587. data/lib/tasker/telemetry.rb +59 -0
  588. data/lib/tasker/types/auth_config.rb +81 -0
  589. data/lib/tasker/types/backoff_config.rb +142 -0
  590. data/lib/tasker/types/cache_config.rb +257 -0
  591. data/lib/tasker/types/database_config.rb +39 -0
  592. data/lib/tasker/types/dependency_graph.rb +225 -0
  593. data/lib/tasker/types/dependency_graph_config.rb +149 -0
  594. data/lib/tasker/types/engine_config.rb +131 -0
  595. data/lib/tasker/types/execution_config.rb +289 -0
  596. data/lib/tasker/types/health_config.rb +84 -0
  597. data/lib/tasker/types/step_sequence.rb +24 -0
  598. data/lib/tasker/types/step_template.rb +63 -0
  599. data/lib/tasker/types/task_request.rb +60 -0
  600. data/lib/tasker/types/telemetry_config.rb +273 -0
  601. data/lib/tasker/types.rb +64 -0
  602. data/lib/tasker/version.rb +7 -0
  603. data/lib/tasker.rb +82 -0
  604. data/lib/tasks/tasker_tasks.rake +302 -0
  605. metadata +958 -0
@@ -0,0 +1,2178 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Tasker::Telemetry::EventRouter
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tasker::Telemetry::EventRouter";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (E)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Telemetry.html" title="Tasker::Telemetry (module)">Telemetry</a></span></span>
41
+ &raquo;
42
+ <span class="title">EventRouter</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Tasker::Telemetry::EventRouter
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Tasker::Telemetry::EventRouter</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <dl>
91
+ <dt>Includes:</dt>
92
+ <dd>Singleton</dd>
93
+ </dl>
94
+
95
+
96
+
97
+
98
+
99
+
100
+ <dl>
101
+ <dt>Defined in:</dt>
102
+ <dd>lib/tasker/telemetry/event_router.rb</dd>
103
+ </dl>
104
+
105
+ </div>
106
+
107
+ <h2>Overview</h2><div class="docstring">
108
+ <div class="discussion">
109
+
110
+ <p>EventRouter provides intelligent routing of events to appropriate telemetry backends</p>
111
+
112
+ <p>This is the strategic core of Phase 4.2.1, enabling declarative event→telemetry mapping while preserving all existing TelemetrySubscriber functionality. It follows the singleton pattern established by HandlerFactory and Events::Publisher.</p>
113
+
114
+ <p>Core Philosophy: PRESERVE all existing 8 TelemetrySubscriber events while adding intelligent routing for 35+ additional lifecycle events.</p>
115
+
116
+
117
+ </div>
118
+ </div>
119
+ <div class="tags">
120
+
121
+ <div class="examples">
122
+ <h4 class="tag_title">Examples:</h4>
123
+
124
+
125
+ <h5 class="example_title"><div class='inline'>
126
+ <p>Basic configuration</p>
127
+ </div></h5>
128
+
129
+ <pre class="example code"><code><span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Telemetry.html" title="Tasker::Telemetry (module)">Telemetry</a></span></span><span class='op'>::</span><span class='const'>EventRouter</span><span class='period'>.</span><span class='id identifier rubyid_configure'><span class='object_link'><a href="#configure-class_method" title="Tasker::Telemetry::EventRouter.configure (method)">configure</a></span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_router'>router</span><span class='op'>|</span>
130
+ <span class='comment'># PRESERVE: All current 8 events → both traces AND metrics
131
+ </span> <span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>task.completed</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='comma'>,</span> <span class='symbol'>:metrics</span><span class='rbracket'>]</span>
132
+ <span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.failed</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='comma'>,</span> <span class='symbol'>:metrics</span><span class='rbracket'>]</span>
133
+
134
+ <span class='comment'># ENHANCE: Add missing lifecycle events with intelligent routing
135
+ </span> <span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>workflow.viable_steps_discovered</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='comma'>,</span> <span class='symbol'>:metrics</span><span class='rbracket'>]</span>
136
+ <span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>observability.task.enqueue</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:metrics</span><span class='rbracket'>]</span> <span class='comment'># Job queue metrics only
137
+ </span> <span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.before_handle</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='rbracket'>]</span> <span class='comment'># Handler execution spans
138
+ </span><span class='kw'>end</span></code></pre>
139
+
140
+
141
+ <h5 class="example_title"><div class='inline'>
142
+ <p>Production sampling configuration</p>
143
+ </div></h5>
144
+
145
+ <pre class="example code"><code><span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>step.before_handle</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>sampling_rate:</span> <span class='float'>0.1</span> <span class='comment'># 10% sampling
146
+ </span><span class='id identifier rubyid_router'>router</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>database.query_executed</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='comma'>,</span> <span class='symbol'>:metrics</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>priority:</span> <span class='symbol'>:high</span></code></pre>
147
+
148
+ </div>
149
+
150
+
151
+ </div>
152
+
153
+
154
+
155
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
156
+ <ul class="summary">
157
+
158
+ <li class="public ">
159
+ <span class="summary_signature">
160
+
161
+ <a href="#log_events-instance_method" title="#log_events (instance method)">#<strong>log_events</strong> &#x21d2; Array&lt;String&gt; </a>
162
+
163
+
164
+
165
+ </span>
166
+
167
+
168
+
169
+
170
+ <span class="note title readonly">readonly</span>
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+ <span class="summary_desc"><div class='inline'>
181
+ <p>List of events that route to logs.</p>
182
+ </div></span>
183
+
184
+ </li>
185
+
186
+
187
+ <li class="public ">
188
+ <span class="summary_signature">
189
+
190
+ <a href="#mappings-instance_method" title="#mappings (instance method)">#<strong>mappings</strong> &#x21d2; Hash&lt;String, EventMapping&gt; </a>
191
+
192
+
193
+
194
+ </span>
195
+
196
+
197
+
198
+
199
+ <span class="note title readonly">readonly</span>
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+ <span class="summary_desc"><div class='inline'>
210
+ <p>Registry of event mappings by event name.</p>
211
+ </div></span>
212
+
213
+ </li>
214
+
215
+
216
+ <li class="public ">
217
+ <span class="summary_signature">
218
+
219
+ <a href="#metrics_events-instance_method" title="#metrics_events (instance method)">#<strong>metrics_events</strong> &#x21d2; Array&lt;String&gt; </a>
220
+
221
+
222
+
223
+ </span>
224
+
225
+
226
+
227
+
228
+ <span class="note title readonly">readonly</span>
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <span class="summary_desc"><div class='inline'>
239
+ <p>List of events that route to metrics.</p>
240
+ </div></span>
241
+
242
+ </li>
243
+
244
+
245
+ <li class="public ">
246
+ <span class="summary_signature">
247
+
248
+ <a href="#trace_events-instance_method" title="#trace_events (instance method)">#<strong>trace_events</strong> &#x21d2; Array&lt;String&gt; </a>
249
+
250
+
251
+
252
+ </span>
253
+
254
+
255
+
256
+
257
+ <span class="note title readonly">readonly</span>
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+ <span class="summary_desc"><div class='inline'>
268
+ <p>List of events that route to traces.</p>
269
+ </div></span>
270
+
271
+ </li>
272
+
273
+
274
+ </ul>
275
+
276
+
277
+
278
+
279
+
280
+ <h2>
281
+ Class Method Summary
282
+ <small><a href="#" class="summary_toggle">collapse</a></small>
283
+ </h2>
284
+
285
+ <ul class="summary">
286
+
287
+ <li class="public ">
288
+ <span class="summary_signature">
289
+
290
+ <a href="#configure-class_method" title="configure (class method)">.<strong>configure</strong> {|EventRouter| ... } &#x21d2; EventRouter </a>
291
+
292
+
293
+
294
+ </span>
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+ <span class="summary_desc"><div class='inline'>
305
+ <p>Configure event routing with a block.</p>
306
+ </div></span>
307
+
308
+ </li>
309
+
310
+
311
+ </ul>
312
+
313
+ <h2>
314
+ Instance Method Summary
315
+ <small><a href="#" class="summary_toggle">collapse</a></small>
316
+ </h2>
317
+
318
+ <ul class="summary">
319
+
320
+ <li class="public ">
321
+ <span class="summary_signature">
322
+
323
+ <a href="#bulk_configure-instance_method" title="#bulk_configure (instance method)">#<strong>bulk_configure</strong>(mappings_config) &#x21d2; Array&lt;EventMapping&gt; </a>
324
+
325
+
326
+
327
+ </span>
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+ <span class="summary_desc"><div class='inline'>
338
+ <p>Bulk configure multiple mappings.</p>
339
+ </div></span>
340
+
341
+ </li>
342
+
343
+
344
+ <li class="public ">
345
+ <span class="summary_signature">
346
+
347
+ <a href="#configured_events-instance_method" title="#configured_events (instance method)">#<strong>configured_events</strong> &#x21d2; Array&lt;String&gt; </a>
348
+
349
+
350
+
351
+ </span>
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+ <span class="summary_desc"><div class='inline'>
362
+ <p>Get a list of all configured event names.</p>
363
+ </div></span>
364
+
365
+ </li>
366
+
367
+
368
+ <li class="public ">
369
+ <span class="summary_signature">
370
+
371
+ <a href="#events_for_backend-instance_method" title="#events_for_backend (instance method)">#<strong>events_for_backend</strong>(backend) &#x21d2; Array&lt;String&gt; </a>
372
+
373
+
374
+
375
+ </span>
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+ <span class="summary_desc"><div class='inline'>
386
+ <p>Get all events that should route to a specific backend.</p>
387
+ </div></span>
388
+
389
+ </li>
390
+
391
+
392
+ <li class="public ">
393
+ <span class="summary_signature">
394
+
395
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> &#x21d2; EventRouter </a>
396
+
397
+
398
+
399
+ </span>
400
+
401
+
402
+ <span class="note title constructor">constructor</span>
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+ <span class="summary_desc"><div class='inline'>
412
+ <p>Initialize the event router with default mappings.</p>
413
+ </div></span>
414
+
415
+ </li>
416
+
417
+
418
+ <li class="public ">
419
+ <span class="summary_signature">
420
+
421
+ <a href="#map-instance_method" title="#map (instance method)">#<strong>map</strong>(event_name_or_hash, backends: [:trace]) &#x21d2; EventMapping </a>
422
+
423
+
424
+
425
+ </span>
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+ <span class="summary_desc"><div class='inline'>
436
+ <p>Map an event to specific telemetry backends.</p>
437
+ </div></span>
438
+
439
+ </li>
440
+
441
+
442
+ <li class="public ">
443
+ <span class="summary_signature">
444
+
445
+ <a href="#mapping_exists%3F-instance_method" title="#mapping_exists? (instance method)">#<strong>mapping_exists?</strong>(event_name) &#x21d2; Boolean </a>
446
+
447
+
448
+
449
+ </span>
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+ <span class="summary_desc"><div class='inline'>
460
+ <p>Check if a mapping exists for a specific event.</p>
461
+ </div></span>
462
+
463
+ </li>
464
+
465
+
466
+ <li class="public ">
467
+ <span class="summary_signature">
468
+
469
+ <a href="#mapping_for-instance_method" title="#mapping_for (instance method)">#<strong>mapping_for</strong>(event_name) &#x21d2; EventMapping<sup>?</sup> </a>
470
+
471
+
472
+
473
+ </span>
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+ <span class="summary_desc"><div class='inline'>
484
+ <p>Get the mapping for a specific event.</p>
485
+ </div></span>
486
+
487
+ </li>
488
+
489
+
490
+ <li class="public ">
491
+ <span class="summary_signature">
492
+
493
+ <a href="#reset!-instance_method" title="#reset! (instance method)">#<strong>reset!</strong> &#x21d2; void </a>
494
+
495
+
496
+
497
+ </span>
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+ <span class="summary_desc"><div class='inline'>
508
+ <p>Reset all mappings (primarily for testing).</p>
509
+ </div></span>
510
+
511
+ </li>
512
+
513
+
514
+ <li class="public ">
515
+ <span class="summary_signature">
516
+
517
+ <a href="#route_event-instance_method" title="#route_event (instance method)">#<strong>route_event</strong>(event_name, payload = {}) &#x21d2; Hash </a>
518
+
519
+
520
+
521
+ </span>
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
531
+ <span class="summary_desc"><div class='inline'>
532
+ <p>Route an event to appropriate backends based on configuration.</p>
533
+ </div></span>
534
+
535
+ </li>
536
+
537
+
538
+ <li class="public ">
539
+ <span class="summary_signature">
540
+
541
+ <a href="#routes_to_logs%3F-instance_method" title="#routes_to_logs? (instance method)">#<strong>routes_to_logs?</strong>(event_name) &#x21d2; Boolean </a>
542
+
543
+
544
+
545
+ </span>
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+ <span class="summary_desc"><div class='inline'>
556
+ <p>Check if an event routes to logs.</p>
557
+ </div></span>
558
+
559
+ </li>
560
+
561
+
562
+ <li class="public ">
563
+ <span class="summary_signature">
564
+
565
+ <a href="#routes_to_metrics%3F-instance_method" title="#routes_to_metrics? (instance method)">#<strong>routes_to_metrics?</strong>(event_name) &#x21d2; Boolean </a>
566
+
567
+
568
+
569
+ </span>
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+ <span class="summary_desc"><div class='inline'>
580
+ <p>Check if an event routes to metrics.</p>
581
+ </div></span>
582
+
583
+ </li>
584
+
585
+
586
+ <li class="public ">
587
+ <span class="summary_signature">
588
+
589
+ <a href="#routes_to_traces%3F-instance_method" title="#routes_to_traces? (instance method)">#<strong>routes_to_traces?</strong>(event_name) &#x21d2; Boolean </a>
590
+
591
+
592
+
593
+ </span>
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+ <span class="summary_desc"><div class='inline'>
604
+ <p>Check if an event routes to traces.</p>
605
+ </div></span>
606
+
607
+ </li>
608
+
609
+
610
+ <li class="public ">
611
+ <span class="summary_signature">
612
+
613
+ <a href="#routing_stats-instance_method" title="#routing_stats (instance method)">#<strong>routing_stats</strong> &#x21d2; Hash </a>
614
+
615
+
616
+
617
+ </span>
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+
627
+ <span class="summary_desc"><div class='inline'>
628
+ <p>Get routing statistics for debugging.</p>
629
+ </div></span>
630
+
631
+ </li>
632
+
633
+
634
+ </ul>
635
+
636
+
637
+
638
+ <div id="constructor_details" class="method_details_list">
639
+ <h2>Constructor Details</h2>
640
+
641
+ <div class="method_details first">
642
+ <h3 class="signature first" id="initialize-instance_method">
643
+
644
+ #<strong>initialize</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::Telemetry::EventRouter (class)">EventRouter</a></span></tt>
645
+
646
+
647
+
648
+
649
+
650
+ </h3><div class="docstring">
651
+ <div class="discussion">
652
+
653
+ <p>Initialize the event router with default mappings</p>
654
+
655
+
656
+ </div>
657
+ </div>
658
+ <div class="tags">
659
+
660
+
661
+ </div><table class="source_code">
662
+ <tr>
663
+ <td>
664
+ <pre class="lines">
665
+
666
+
667
+ 48
668
+ 49
669
+ 50
670
+ 51
671
+ 52
672
+ 53
673
+ 54
674
+ 55
675
+ 56
676
+ 57
677
+ 58
678
+ 59</pre>
679
+ </td>
680
+ <td>
681
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 48</span>
682
+
683
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
684
+ <span class='ivar'>@mappings</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
685
+ <span class='ivar'>@trace_events</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
686
+ <span class='ivar'>@metrics_events</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
687
+ <span class='ivar'>@log_events</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
688
+
689
+ <span class='comment'># Load default mappings that preserve existing TelemetrySubscriber functionality
690
+ </span> <span class='id identifier rubyid_load_default_mappings'>load_default_mappings</span>
691
+
692
+ <span class='comment'># Register this router with MetricsBackend for automatic routing
693
+ </span> <span class='const'><span class='object_link'><a href="MetricsBackend.html" title="Tasker::Telemetry::MetricsBackend (class)">MetricsBackend</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_register_event_router'>register_event_router</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
694
+ <span class='kw'>end</span></pre>
695
+ </td>
696
+ </tr>
697
+ </table>
698
+ </div>
699
+
700
+ </div>
701
+
702
+ <div id="instance_attr_details" class="attr_details">
703
+ <h2>Instance Attribute Details</h2>
704
+
705
+
706
+ <span id=""></span>
707
+ <div class="method_details first">
708
+ <h3 class="signature first" id="log_events-instance_method">
709
+
710
+ #<strong>log_events</strong> &#x21d2; <tt>Array&lt;String&gt;</tt> <span class="extras">(readonly)</span>
711
+
712
+
713
+
714
+
715
+
716
+ </h3><div class="docstring">
717
+ <div class="discussion">
718
+
719
+ <p>Returns List of events that route to logs.</p>
720
+
721
+
722
+ </div>
723
+ </div>
724
+ <div class="tags">
725
+
726
+ <p class="tag_title">Returns:</p>
727
+ <ul class="return">
728
+
729
+ <li>
730
+
731
+
732
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
733
+
734
+
735
+
736
+ &mdash;
737
+ <div class='inline'>
738
+ <p>List of events that route to logs</p>
739
+ </div>
740
+
741
+ </li>
742
+
743
+ </ul>
744
+
745
+ </div><table class="source_code">
746
+ <tr>
747
+ <td>
748
+ <pre class="lines">
749
+
750
+
751
+ 45
752
+ 46
753
+ 47</pre>
754
+ </td>
755
+ <td>
756
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 45</span>
757
+
758
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_events'>log_events</span>
759
+ <span class='ivar'>@log_events</span>
760
+ <span class='kw'>end</span></pre>
761
+ </td>
762
+ </tr>
763
+ </table>
764
+ </div>
765
+
766
+
767
+ <span id=""></span>
768
+ <div class="method_details ">
769
+ <h3 class="signature " id="mappings-instance_method">
770
+
771
+ #<strong>mappings</strong> &#x21d2; <tt>Hash&lt;String, <span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span>&gt;</tt> <span class="extras">(readonly)</span>
772
+
773
+
774
+
775
+
776
+
777
+ </h3><div class="docstring">
778
+ <div class="discussion">
779
+
780
+ <p>Returns Registry of event mappings by event name.</p>
781
+
782
+
783
+ </div>
784
+ </div>
785
+ <div class="tags">
786
+
787
+ <p class="tag_title">Returns:</p>
788
+ <ul class="return">
789
+
790
+ <li>
791
+
792
+
793
+ <span class='type'>(<tt>Hash&lt;String, <span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span>&gt;</tt>)</span>
794
+
795
+
796
+
797
+ &mdash;
798
+ <div class='inline'>
799
+ <p>Registry of event mappings by event name</p>
800
+ </div>
801
+
802
+ </li>
803
+
804
+ </ul>
805
+
806
+ </div><table class="source_code">
807
+ <tr>
808
+ <td>
809
+ <pre class="lines">
810
+
811
+
812
+ 36
813
+ 37
814
+ 38</pre>
815
+ </td>
816
+ <td>
817
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 36</span>
818
+
819
+ <span class='kw'>def</span> <span class='id identifier rubyid_mappings'>mappings</span>
820
+ <span class='ivar'>@mappings</span>
821
+ <span class='kw'>end</span></pre>
822
+ </td>
823
+ </tr>
824
+ </table>
825
+ </div>
826
+
827
+
828
+ <span id=""></span>
829
+ <div class="method_details ">
830
+ <h3 class="signature " id="metrics_events-instance_method">
831
+
832
+ #<strong>metrics_events</strong> &#x21d2; <tt>Array&lt;String&gt;</tt> <span class="extras">(readonly)</span>
833
+
834
+
835
+
836
+
837
+
838
+ </h3><div class="docstring">
839
+ <div class="discussion">
840
+
841
+ <p>Returns List of events that route to metrics.</p>
842
+
843
+
844
+ </div>
845
+ </div>
846
+ <div class="tags">
847
+
848
+ <p class="tag_title">Returns:</p>
849
+ <ul class="return">
850
+
851
+ <li>
852
+
853
+
854
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
855
+
856
+
857
+
858
+ &mdash;
859
+ <div class='inline'>
860
+ <p>List of events that route to metrics</p>
861
+ </div>
862
+
863
+ </li>
864
+
865
+ </ul>
866
+
867
+ </div><table class="source_code">
868
+ <tr>
869
+ <td>
870
+ <pre class="lines">
871
+
872
+
873
+ 42
874
+ 43
875
+ 44</pre>
876
+ </td>
877
+ <td>
878
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 42</span>
879
+
880
+ <span class='kw'>def</span> <span class='id identifier rubyid_metrics_events'>metrics_events</span>
881
+ <span class='ivar'>@metrics_events</span>
882
+ <span class='kw'>end</span></pre>
883
+ </td>
884
+ </tr>
885
+ </table>
886
+ </div>
887
+
888
+
889
+ <span id=""></span>
890
+ <div class="method_details ">
891
+ <h3 class="signature " id="trace_events-instance_method">
892
+
893
+ #<strong>trace_events</strong> &#x21d2; <tt>Array&lt;String&gt;</tt> <span class="extras">(readonly)</span>
894
+
895
+
896
+
897
+
898
+
899
+ </h3><div class="docstring">
900
+ <div class="discussion">
901
+
902
+ <p>Returns List of events that route to traces.</p>
903
+
904
+
905
+ </div>
906
+ </div>
907
+ <div class="tags">
908
+
909
+ <p class="tag_title">Returns:</p>
910
+ <ul class="return">
911
+
912
+ <li>
913
+
914
+
915
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
916
+
917
+
918
+
919
+ &mdash;
920
+ <div class='inline'>
921
+ <p>List of events that route to traces</p>
922
+ </div>
923
+
924
+ </li>
925
+
926
+ </ul>
927
+
928
+ </div><table class="source_code">
929
+ <tr>
930
+ <td>
931
+ <pre class="lines">
932
+
933
+
934
+ 39
935
+ 40
936
+ 41</pre>
937
+ </td>
938
+ <td>
939
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 39</span>
940
+
941
+ <span class='kw'>def</span> <span class='id identifier rubyid_trace_events'>trace_events</span>
942
+ <span class='ivar'>@trace_events</span>
943
+ <span class='kw'>end</span></pre>
944
+ </td>
945
+ </tr>
946
+ </table>
947
+ </div>
948
+
949
+ </div>
950
+
951
+
952
+ <div id="class_method_details" class="method_details_list">
953
+ <h2>Class Method Details</h2>
954
+
955
+
956
+ <div class="method_details first">
957
+ <h3 class="signature first" id="configure-class_method">
958
+
959
+ .<strong>configure</strong> {|EventRouter| ... } &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::Telemetry::EventRouter (class)">EventRouter</a></span></tt>
960
+
961
+
962
+
963
+
964
+
965
+ </h3><div class="docstring">
966
+ <div class="discussion">
967
+
968
+ <p>Configure event routing with a block</p>
969
+
970
+
971
+ </div>
972
+ </div>
973
+ <div class="tags">
974
+
975
+ <p class="tag_title">Yields:</p>
976
+ <ul class="yield">
977
+
978
+ <li>
979
+
980
+
981
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Tasker::Telemetry::EventRouter (class)">EventRouter</a></span></tt>)</span>
982
+
983
+
984
+
985
+ &mdash;
986
+ <div class='inline'>
987
+ <p>The router instance for configuration</p>
988
+ </div>
989
+
990
+ </li>
991
+
992
+ </ul>
993
+ <p class="tag_title">Returns:</p>
994
+ <ul class="return">
995
+
996
+ <li>
997
+
998
+
999
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Tasker::Telemetry::EventRouter (class)">EventRouter</a></span></tt>)</span>
1000
+
1001
+
1002
+
1003
+ &mdash;
1004
+ <div class='inline'>
1005
+ <p>The configured router instance</p>
1006
+ </div>
1007
+
1008
+ </li>
1009
+
1010
+ </ul>
1011
+
1012
+ </div><table class="source_code">
1013
+ <tr>
1014
+ <td>
1015
+ <pre class="lines">
1016
+
1017
+
1018
+ 65
1019
+ 66
1020
+ 67</pre>
1021
+ </td>
1022
+ <td>
1023
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 65</span>
1024
+
1025
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span>
1026
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_router'>router</span><span class='op'>|</span> <span class='kw'>yield</span><span class='lparen'>(</span><span class='id identifier rubyid_router'>router</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span> <span class='rbrace'>}</span>
1027
+ <span class='kw'>end</span></pre>
1028
+ </td>
1029
+ </tr>
1030
+ </table>
1031
+ </div>
1032
+
1033
+ </div>
1034
+
1035
+ <div id="instance_method_details" class="method_details_list">
1036
+ <h2>Instance Method Details</h2>
1037
+
1038
+
1039
+ <div class="method_details first">
1040
+ <h3 class="signature first" id="bulk_configure-instance_method">
1041
+
1042
+ #<strong>bulk_configure</strong>(mappings_config) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span>&gt;</tt>
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+ </h3><div class="docstring">
1049
+ <div class="discussion">
1050
+
1051
+ <p>Bulk configure multiple mappings</p>
1052
+
1053
+
1054
+ </div>
1055
+ </div>
1056
+ <div class="tags">
1057
+ <p class="tag_title">Parameters:</p>
1058
+ <ul class="param">
1059
+
1060
+ <li>
1061
+
1062
+ <span class='name'>mappings_config</span>
1063
+
1064
+
1065
+ <span class='type'>(<tt>Hash</tt>)</span>
1066
+
1067
+
1068
+
1069
+ &mdash;
1070
+ <div class='inline'>
1071
+ <p>Hash of event_name =&gt; backend_config</p>
1072
+ </div>
1073
+
1074
+ </li>
1075
+
1076
+ </ul>
1077
+
1078
+ <p class="tag_title">Returns:</p>
1079
+ <ul class="return">
1080
+
1081
+ <li>
1082
+
1083
+
1084
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span>&gt;</tt>)</span>
1085
+
1086
+
1087
+
1088
+ &mdash;
1089
+ <div class='inline'>
1090
+ <p>Array of created mappings</p>
1091
+ </div>
1092
+
1093
+ </li>
1094
+
1095
+ </ul>
1096
+ <p class="tag_title">Raises:</p>
1097
+ <ul class="raise">
1098
+
1099
+ <li>
1100
+
1101
+
1102
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1103
+
1104
+
1105
+
1106
+ &mdash;
1107
+ <div class='inline'>
1108
+ <p>If any mapping configuration is invalid</p>
1109
+ </div>
1110
+
1111
+ </li>
1112
+
1113
+ </ul>
1114
+
1115
+ </div><table class="source_code">
1116
+ <tr>
1117
+ <td>
1118
+ <pre class="lines">
1119
+
1120
+
1121
+ 232
1122
+ 233
1123
+ 234
1124
+ 235
1125
+ 236
1126
+ 237
1127
+ 238
1128
+ 239
1129
+ 240
1130
+ 241
1131
+ 242
1132
+ 243
1133
+ 244
1134
+ 245
1135
+ 246</pre>
1136
+ </td>
1137
+ <td>
1138
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 232</span>
1139
+
1140
+ <span class='kw'>def</span> <span class='id identifier rubyid_bulk_configure'>bulk_configure</span><span class='lparen'>(</span><span class='id identifier rubyid_mappings_config'>mappings_config</span><span class='rparen'>)</span>
1141
+ <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_mappings_config'>mappings_config</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
1142
+
1143
+ <span class='id identifier rubyid_mappings_config'>mappings_config</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span><span class='op'>|</span>
1144
+ <span class='kw'>if</span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span>
1145
+ <span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='label'>backends:</span> <span class='id identifier rubyid_config'>config</span><span class='rparen'>)</span>
1146
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1147
+ <span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_config'>config</span><span class='rparen'>)</span>
1148
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:to_sym</span><span class='rparen'>)</span>
1149
+ <span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='label'>backends:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_config'>config</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1150
+ <span class='kw'>else</span>
1151
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid config for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_event_name'>event_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Must be Array, Hash, or Symbol</span><span class='tstring_end'>&quot;</span></span>
1152
+ <span class='kw'>end</span>
1153
+ <span class='kw'>end</span>
1154
+ <span class='kw'>end</span></pre>
1155
+ </td>
1156
+ </tr>
1157
+ </table>
1158
+ </div>
1159
+
1160
+ <div class="method_details ">
1161
+ <h3 class="signature " id="configured_events-instance_method">
1162
+
1163
+ #<strong>configured_events</strong> &#x21d2; <tt>Array&lt;String&gt;</tt>
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+ </h3><div class="docstring">
1170
+ <div class="discussion">
1171
+
1172
+ <p>Get a list of all configured event names</p>
1173
+
1174
+
1175
+ </div>
1176
+ </div>
1177
+ <div class="tags">
1178
+
1179
+ <p class="tag_title">Returns:</p>
1180
+ <ul class="return">
1181
+
1182
+ <li>
1183
+
1184
+
1185
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1186
+
1187
+
1188
+
1189
+ &mdash;
1190
+ <div class='inline'>
1191
+ <p>All configured event names</p>
1192
+ </div>
1193
+
1194
+ </li>
1195
+
1196
+ </ul>
1197
+
1198
+ </div><table class="source_code">
1199
+ <tr>
1200
+ <td>
1201
+ <pre class="lines">
1202
+
1203
+
1204
+ 198
1205
+ 199
1206
+ 200</pre>
1207
+ </td>
1208
+ <td>
1209
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 198</span>
1210
+
1211
+ <span class='kw'>def</span> <span class='id identifier rubyid_configured_events'>configured_events</span>
1212
+ <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span>
1213
+ <span class='kw'>end</span></pre>
1214
+ </td>
1215
+ </tr>
1216
+ </table>
1217
+ </div>
1218
+
1219
+ <div class="method_details ">
1220
+ <h3 class="signature " id="events_for_backend-instance_method">
1221
+
1222
+ #<strong>events_for_backend</strong>(backend) &#x21d2; <tt>Array&lt;String&gt;</tt>
1223
+
1224
+
1225
+
1226
+
1227
+
1228
+ </h3><div class="docstring">
1229
+ <div class="discussion">
1230
+
1231
+ <p>Get all events that should route to a specific backend</p>
1232
+
1233
+
1234
+ </div>
1235
+ </div>
1236
+ <div class="tags">
1237
+ <p class="tag_title">Parameters:</p>
1238
+ <ul class="param">
1239
+
1240
+ <li>
1241
+
1242
+ <span class='name'>backend</span>
1243
+
1244
+
1245
+ <span class='type'>(<tt>Symbol</tt>)</span>
1246
+
1247
+
1248
+
1249
+ &mdash;
1250
+ <div class='inline'>
1251
+ <p>Backend type (:trace, :metrics, :logs)</p>
1252
+ </div>
1253
+
1254
+ </li>
1255
+
1256
+ </ul>
1257
+
1258
+ <p class="tag_title">Returns:</p>
1259
+ <ul class="return">
1260
+
1261
+ <li>
1262
+
1263
+
1264
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1265
+
1266
+
1267
+
1268
+ &mdash;
1269
+ <div class='inline'>
1270
+ <p>List of event names</p>
1271
+ </div>
1272
+
1273
+ </li>
1274
+
1275
+ </ul>
1276
+ <p class="tag_title">Raises:</p>
1277
+ <ul class="raise">
1278
+
1279
+ <li>
1280
+
1281
+
1282
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1283
+
1284
+
1285
+
1286
+ &mdash;
1287
+ <div class='inline'>
1288
+ <p>If backend type is not recognized</p>
1289
+ </div>
1290
+
1291
+ </li>
1292
+
1293
+ </ul>
1294
+
1295
+ </div><table class="source_code">
1296
+ <tr>
1297
+ <td>
1298
+ <pre class="lines">
1299
+
1300
+
1301
+ 156
1302
+ 157
1303
+ 158
1304
+ 159
1305
+ 160
1306
+ 161
1307
+ 162
1308
+ 163
1309
+ 164
1310
+ 165
1311
+ 166
1312
+ 167</pre>
1313
+ </td>
1314
+ <td>
1315
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 156</span>
1316
+
1317
+ <span class='kw'>def</span> <span class='id identifier rubyid_events_for_backend'>events_for_backend</span><span class='lparen'>(</span><span class='id identifier rubyid_backend'>backend</span><span class='rparen'>)</span>
1318
+ <span class='kw'>case</span> <span class='id identifier rubyid_backend'>backend</span>
1319
+ <span class='kw'>when</span> <span class='symbol'>:trace</span><span class='comma'>,</span> <span class='symbol'>:traces</span>
1320
+ <span class='id identifier rubyid_trace_events'>trace_events</span>
1321
+ <span class='kw'>when</span> <span class='symbol'>:metric</span><span class='comma'>,</span> <span class='symbol'>:metrics</span>
1322
+ <span class='id identifier rubyid_metrics_events'>metrics_events</span>
1323
+ <span class='kw'>when</span> <span class='symbol'>:log</span><span class='comma'>,</span> <span class='symbol'>:logs</span>
1324
+ <span class='id identifier rubyid_log_events'>log_events</span>
1325
+ <span class='kw'>else</span>
1326
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unknown backend type: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_backend'>backend</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Valid backends: :trace, :metrics, :logs</span><span class='tstring_end'>&quot;</span></span>
1327
+ <span class='kw'>end</span>
1328
+ <span class='kw'>end</span></pre>
1329
+ </td>
1330
+ </tr>
1331
+ </table>
1332
+ </div>
1333
+
1334
+ <div class="method_details ">
1335
+ <h3 class="signature " id="map-instance_method">
1336
+
1337
+ #<strong>map</strong>(event_name_or_hash, backends: [:trace]) &#x21d2; <tt><span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span></tt>
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+ </h3><div class="docstring">
1344
+ <div class="discussion">
1345
+
1346
+ <p>Map an event to specific telemetry backends</p>
1347
+
1348
+
1349
+ </div>
1350
+ </div>
1351
+ <div class="tags">
1352
+ <p class="tag_title">Parameters:</p>
1353
+ <ul class="param">
1354
+
1355
+ <li>
1356
+
1357
+ <span class='name'>event_name</span>
1358
+
1359
+
1360
+ <span class='type'>(<tt>String</tt>, <tt>Hash</tt>)</span>
1361
+
1362
+
1363
+
1364
+ &mdash;
1365
+ <div class='inline'>
1366
+ <p>Event name in dot notation, or hash with event =&gt; backends</p>
1367
+ </div>
1368
+
1369
+ </li>
1370
+
1371
+ <li>
1372
+
1373
+ <span class='name'>backends</span>
1374
+
1375
+
1376
+ <span class='type'>(<tt>Array&lt;Symbol&gt;</tt>)</span>
1377
+
1378
+
1379
+ <em class="default">(defaults to: <tt>[:trace]</tt>)</em>
1380
+
1381
+
1382
+ &mdash;
1383
+ <div class='inline'>
1384
+ <p>List of backend types (:trace, :metrics, :logs)</p>
1385
+ </div>
1386
+
1387
+ </li>
1388
+
1389
+ <li>
1390
+
1391
+ <span class='name'>options</span>
1392
+
1393
+
1394
+ <span class='type'>(<tt>Hash</tt>)</span>
1395
+
1396
+
1397
+
1398
+ &mdash;
1399
+ <div class='inline'>
1400
+ <p>Additional mapping options</p>
1401
+ </div>
1402
+
1403
+ </li>
1404
+
1405
+ </ul>
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+ <p class="tag_title">Returns:</p>
1414
+ <ul class="return">
1415
+
1416
+ <li>
1417
+
1418
+
1419
+ <span class='type'>(<tt><span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span></tt>)</span>
1420
+
1421
+
1422
+
1423
+ &mdash;
1424
+ <div class='inline'>
1425
+ <p>The created mapping</p>
1426
+ </div>
1427
+
1428
+ </li>
1429
+
1430
+ </ul>
1431
+ <p class="tag_title">Raises:</p>
1432
+ <ul class="raise">
1433
+
1434
+ <li>
1435
+
1436
+
1437
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1438
+
1439
+
1440
+
1441
+ </li>
1442
+
1443
+ </ul>
1444
+
1445
+ </div><table class="source_code">
1446
+ <tr>
1447
+ <td>
1448
+ <pre class="lines">
1449
+
1450
+
1451
+ 79
1452
+ 80
1453
+ 81
1454
+ 82
1455
+ 83
1456
+ 84
1457
+ 85
1458
+ 86
1459
+ 87
1460
+ 88
1461
+ 89
1462
+ 90
1463
+ 91
1464
+ 92
1465
+ 93
1466
+ 94
1467
+ 95
1468
+ 96
1469
+ 97
1470
+ 98
1471
+ 99
1472
+ 100</pre>
1473
+ </td>
1474
+ <td>
1475
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 79</span>
1476
+
1477
+ <span class='kw'>def</span> <span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name_or_hash'>event_name_or_hash</span><span class='comma'>,</span> <span class='label'>backends:</span> <span class='lbracket'>[</span><span class='symbol'>:trace</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>**</span><span class='rparen'>)</span>
1478
+ <span class='comment'># Handle hash syntax: map &#39;event&#39; =&gt; [:trace, :metrics]
1479
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_event_name_or_hash'>event_name_or_hash</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1480
+ <span class='comment'># Extract the first (and typically only) hash pair
1481
+ </span> <span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_extracted_backends'>extracted_backends</span> <span class='op'>=</span> <span class='id identifier rubyid_event_name_or_hash'>event_name_or_hash</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
1482
+ <span class='id identifier rubyid_backends'>backends</span> <span class='op'>=</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_extracted_backends'>extracted_backends</span><span class='rparen'>)</span>
1483
+ <span class='kw'>else</span>
1484
+ <span class='id identifier rubyid_event_name'>event_name</span> <span class='op'>=</span> <span class='id identifier rubyid_event_name_or_hash'>event_name_or_hash</span>
1485
+ <span class='kw'>end</span>
1486
+
1487
+ <span class='comment'># Ensure we always have an event_name
1488
+ </span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>event_name cannot be nil</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_event_name'>event_name</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1489
+
1490
+ <span class='id identifier rubyid_mapping'>mapping</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="EventMapping.html#initialize-instance_method" title="Tasker::Telemetry::EventMapping#initialize (method)">new</a></span></span><span class='lparen'>(</span>
1491
+ <span class='label'>event_name:</span> <span class='id identifier rubyid_event_name'>event_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span>
1492
+ <span class='label'>backends:</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_backends'>backends</span><span class='rparen'>)</span><span class='comma'>,</span>
1493
+ <span class='op'>**</span>
1494
+ <span class='rparen'>)</span>
1495
+
1496
+ <span class='id identifier rubyid_register_mapping'>register_mapping</span><span class='lparen'>(</span><span class='id identifier rubyid_mapping'>mapping</span><span class='rparen'>)</span>
1497
+ <span class='id identifier rubyid_mapping'>mapping</span>
1498
+ <span class='kw'>end</span></pre>
1499
+ </td>
1500
+ </tr>
1501
+ </table>
1502
+ </div>
1503
+
1504
+ <div class="method_details ">
1505
+ <h3 class="signature " id="mapping_exists?-instance_method">
1506
+
1507
+ #<strong>mapping_exists?</strong>(event_name) &#x21d2; <tt>Boolean</tt>
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+ </h3><div class="docstring">
1514
+ <div class="discussion">
1515
+
1516
+ <p>Check if a mapping exists for a specific event</p>
1517
+
1518
+
1519
+ </div>
1520
+ </div>
1521
+ <div class="tags">
1522
+ <p class="tag_title">Parameters:</p>
1523
+ <ul class="param">
1524
+
1525
+ <li>
1526
+
1527
+ <span class='name'>event_name</span>
1528
+
1529
+
1530
+ <span class='type'>(<tt>String</tt>)</span>
1531
+
1532
+
1533
+
1534
+ &mdash;
1535
+ <div class='inline'>
1536
+ <p>Event name</p>
1537
+ </div>
1538
+
1539
+ </li>
1540
+
1541
+ </ul>
1542
+
1543
+ <p class="tag_title">Returns:</p>
1544
+ <ul class="return">
1545
+
1546
+ <li>
1547
+
1548
+
1549
+ <span class='type'>(<tt>Boolean</tt>)</span>
1550
+
1551
+
1552
+
1553
+ &mdash;
1554
+ <div class='inline'>
1555
+ <p>True if mapping exists</p>
1556
+ </div>
1557
+
1558
+ </li>
1559
+
1560
+ </ul>
1561
+
1562
+ </div><table class="source_code">
1563
+ <tr>
1564
+ <td>
1565
+ <pre class="lines">
1566
+
1567
+
1568
+ 114
1569
+ 115
1570
+ 116</pre>
1571
+ </td>
1572
+ <td>
1573
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 114</span>
1574
+
1575
+ <span class='kw'>def</span> <span class='id identifier rubyid_mapping_exists?'>mapping_exists?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1576
+ <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
1577
+ <span class='kw'>end</span></pre>
1578
+ </td>
1579
+ </tr>
1580
+ </table>
1581
+ </div>
1582
+
1583
+ <div class="method_details ">
1584
+ <h3 class="signature " id="mapping_for-instance_method">
1585
+
1586
+ #<strong>mapping_for</strong>(event_name) &#x21d2; <tt><span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span></tt><sup>?</sup>
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+ </h3><div class="docstring">
1593
+ <div class="discussion">
1594
+
1595
+ <p>Get the mapping for a specific event</p>
1596
+
1597
+
1598
+ </div>
1599
+ </div>
1600
+ <div class="tags">
1601
+ <p class="tag_title">Parameters:</p>
1602
+ <ul class="param">
1603
+
1604
+ <li>
1605
+
1606
+ <span class='name'>event_name</span>
1607
+
1608
+
1609
+ <span class='type'>(<tt>String</tt>)</span>
1610
+
1611
+
1612
+
1613
+ &mdash;
1614
+ <div class='inline'>
1615
+ <p>Event name</p>
1616
+ </div>
1617
+
1618
+ </li>
1619
+
1620
+ </ul>
1621
+
1622
+ <p class="tag_title">Returns:</p>
1623
+ <ul class="return">
1624
+
1625
+ <li>
1626
+
1627
+
1628
+ <span class='type'>(<tt><span class='object_link'><a href="EventMapping.html" title="Tasker::Telemetry::EventMapping (class)">EventMapping</a></span></tt>, <tt>nil</tt>)</span>
1629
+
1630
+
1631
+
1632
+ &mdash;
1633
+ <div class='inline'>
1634
+ <p>The mapping or nil if not found</p>
1635
+ </div>
1636
+
1637
+ </li>
1638
+
1639
+ </ul>
1640
+
1641
+ </div><table class="source_code">
1642
+ <tr>
1643
+ <td>
1644
+ <pre class="lines">
1645
+
1646
+
1647
+ 106
1648
+ 107
1649
+ 108</pre>
1650
+ </td>
1651
+ <td>
1652
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 106</span>
1653
+
1654
+ <span class='kw'>def</span> <span class='id identifier rubyid_mapping_for'>mapping_for</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1655
+ <span class='id identifier rubyid_mappings'>mappings</span><span class='lbracket'>[</span><span class='id identifier rubyid_event_name'>event_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rbracket'>]</span>
1656
+ <span class='kw'>end</span></pre>
1657
+ </td>
1658
+ </tr>
1659
+ </table>
1660
+ </div>
1661
+
1662
+ <div class="method_details ">
1663
+ <h3 class="signature " id="reset!-instance_method">
1664
+
1665
+ #<strong>reset!</strong> &#x21d2; <tt>void</tt>
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+ </h3><div class="docstring">
1672
+ <div class="discussion">
1673
+ <p class="note returns_void">This method returns an undefined value.</p>
1674
+ <p>Reset all mappings (primarily for testing)</p>
1675
+
1676
+
1677
+ </div>
1678
+ </div>
1679
+ <div class="tags">
1680
+
1681
+
1682
+ </div><table class="source_code">
1683
+ <tr>
1684
+ <td>
1685
+ <pre class="lines">
1686
+
1687
+
1688
+ 187
1689
+ 188
1690
+ 189
1691
+ 190
1692
+ 191
1693
+ 192
1694
+ 193</pre>
1695
+ </td>
1696
+ <td>
1697
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 187</span>
1698
+
1699
+ <span class='kw'>def</span> <span class='id identifier rubyid_reset!'>reset!</span>
1700
+ <span class='ivar'>@mappings</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
1701
+ <span class='ivar'>@trace_events</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
1702
+ <span class='ivar'>@metrics_events</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
1703
+ <span class='ivar'>@log_events</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
1704
+ <span class='id identifier rubyid_load_default_mappings'>load_default_mappings</span>
1705
+ <span class='kw'>end</span></pre>
1706
+ </td>
1707
+ </tr>
1708
+ </table>
1709
+ </div>
1710
+
1711
+ <div class="method_details ">
1712
+ <h3 class="signature " id="route_event-instance_method">
1713
+
1714
+ #<strong>route_event</strong>(event_name, payload = {}) &#x21d2; <tt>Hash</tt>
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+ </h3><div class="docstring">
1721
+ <div class="discussion">
1722
+
1723
+ <p>Route an event to appropriate backends based on configuration</p>
1724
+
1725
+ <p>This is the core routing method that directs events to traces, metrics, and logs based on their configured mapping.</p>
1726
+
1727
+
1728
+ </div>
1729
+ </div>
1730
+ <div class="tags">
1731
+ <p class="tag_title">Parameters:</p>
1732
+ <ul class="param">
1733
+
1734
+ <li>
1735
+
1736
+ <span class='name'>event_name</span>
1737
+
1738
+
1739
+ <span class='type'>(<tt>String</tt>)</span>
1740
+
1741
+
1742
+
1743
+ &mdash;
1744
+ <div class='inline'>
1745
+ <p>The lifecycle event name</p>
1746
+ </div>
1747
+
1748
+ </li>
1749
+
1750
+ <li>
1751
+
1752
+ <span class='name'>payload</span>
1753
+
1754
+
1755
+ <span class='type'>(<tt>Hash</tt>)</span>
1756
+
1757
+
1758
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
1759
+
1760
+
1761
+ &mdash;
1762
+ <div class='inline'>
1763
+ <p>Event payload data</p>
1764
+ </div>
1765
+
1766
+ </li>
1767
+
1768
+ </ul>
1769
+
1770
+ <p class="tag_title">Returns:</p>
1771
+ <ul class="return">
1772
+
1773
+ <li>
1774
+
1775
+
1776
+ <span class='type'>(<tt>Hash</tt>)</span>
1777
+
1778
+
1779
+
1780
+ &mdash;
1781
+ <div class='inline'>
1782
+ <p>Results from each backend (backend =&gt; success boolean)</p>
1783
+ </div>
1784
+
1785
+ </li>
1786
+
1787
+ </ul>
1788
+
1789
+ </div><table class="source_code">
1790
+ <tr>
1791
+ <td>
1792
+ <pre class="lines">
1793
+
1794
+
1795
+ 210
1796
+ 211
1797
+ 212
1798
+ 213
1799
+ 214
1800
+ 215
1801
+ 216
1802
+ 217
1803
+ 218
1804
+ 219
1805
+ 220
1806
+ 221
1807
+ 222
1808
+ 223
1809
+ 224
1810
+ 225</pre>
1811
+ </td>
1812
+ <td>
1813
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 210</span>
1814
+
1815
+ <span class='kw'>def</span> <span class='id identifier rubyid_route_event'>route_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1816
+ <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
1817
+ <span class='id identifier rubyid_mapping'>mapping</span> <span class='op'>=</span> <span class='id identifier rubyid_mapping_for'>mapping_for</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1818
+ <span class='kw'>return</span> <span class='id identifier rubyid_results'>results</span> <span class='kw'>unless</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='op'>&amp;.</span><span class='id identifier rubyid_active?'>active?</span>
1819
+
1820
+ <span class='comment'># Route to metrics backend if configured
1821
+ </span> <span class='id identifier rubyid_results'>results</span><span class='lbracket'>[</span><span class='symbol'>:metrics</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="MetricsBackend.html" title="Tasker::Telemetry::MetricsBackend (class)">MetricsBackend</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_handle_event'>handle_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_metrics?'>routes_to_metrics?</span>
1822
+
1823
+ <span class='comment'># Route to trace backend if configured
1824
+ </span> <span class='id identifier rubyid_results'>results</span><span class='lbracket'>[</span><span class='symbol'>:traces</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TraceBackend.html" title="Tasker::Telemetry::TraceBackend (class)">TraceBackend</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_handle_event'>handle_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_traces?'>routes_to_traces?</span>
1825
+
1826
+ <span class='comment'># Route to log backend if configured
1827
+ </span> <span class='id identifier rubyid_results'>results</span><span class='lbracket'>[</span><span class='symbol'>:logs</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="LogBackend.html" title="Tasker::Telemetry::LogBackend (class)">LogBackend</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_handle_event'>handle_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='comma'>,</span> <span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_logs?'>routes_to_logs?</span>
1828
+
1829
+ <span class='id identifier rubyid_results'>results</span>
1830
+ <span class='kw'>end</span></pre>
1831
+ </td>
1832
+ </tr>
1833
+ </table>
1834
+ </div>
1835
+
1836
+ <div class="method_details ">
1837
+ <h3 class="signature " id="routes_to_logs?-instance_method">
1838
+
1839
+ #<strong>routes_to_logs?</strong>(event_name) &#x21d2; <tt>Boolean</tt>
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+ </h3><div class="docstring">
1846
+ <div class="discussion">
1847
+
1848
+ <p>Check if an event routes to logs</p>
1849
+
1850
+
1851
+ </div>
1852
+ </div>
1853
+ <div class="tags">
1854
+ <p class="tag_title">Parameters:</p>
1855
+ <ul class="param">
1856
+
1857
+ <li>
1858
+
1859
+ <span class='name'>event_name</span>
1860
+
1861
+
1862
+ <span class='type'>(<tt>String</tt>)</span>
1863
+
1864
+
1865
+
1866
+ &mdash;
1867
+ <div class='inline'>
1868
+ <p>Event name</p>
1869
+ </div>
1870
+
1871
+ </li>
1872
+
1873
+ </ul>
1874
+
1875
+ <p class="tag_title">Returns:</p>
1876
+ <ul class="return">
1877
+
1878
+ <li>
1879
+
1880
+
1881
+ <span class='type'>(<tt>Boolean</tt>)</span>
1882
+
1883
+
1884
+
1885
+ &mdash;
1886
+ <div class='inline'>
1887
+ <p>True if the event routes to logs</p>
1888
+ </div>
1889
+
1890
+ </li>
1891
+
1892
+ </ul>
1893
+
1894
+ </div><table class="source_code">
1895
+ <tr>
1896
+ <td>
1897
+ <pre class="lines">
1898
+
1899
+
1900
+ 144
1901
+ 145
1902
+ 146
1903
+ 147
1904
+ 148
1905
+ 149</pre>
1906
+ </td>
1907
+ <td>
1908
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 144</span>
1909
+
1910
+ <span class='kw'>def</span> <span class='id identifier rubyid_routes_to_logs?'>routes_to_logs?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1911
+ <span class='id identifier rubyid_mapping'>mapping</span> <span class='op'>=</span> <span class='id identifier rubyid_mapping_for'>mapping_for</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1912
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_mapping'>mapping</span>
1913
+
1914
+ <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_active?'>active?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_logs?'>routes_to_logs?</span>
1915
+ <span class='kw'>end</span></pre>
1916
+ </td>
1917
+ </tr>
1918
+ </table>
1919
+ </div>
1920
+
1921
+ <div class="method_details ">
1922
+ <h3 class="signature " id="routes_to_metrics?-instance_method">
1923
+
1924
+ #<strong>routes_to_metrics?</strong>(event_name) &#x21d2; <tt>Boolean</tt>
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+ </h3><div class="docstring">
1931
+ <div class="discussion">
1932
+
1933
+ <p>Check if an event routes to metrics</p>
1934
+
1935
+
1936
+ </div>
1937
+ </div>
1938
+ <div class="tags">
1939
+ <p class="tag_title">Parameters:</p>
1940
+ <ul class="param">
1941
+
1942
+ <li>
1943
+
1944
+ <span class='name'>event_name</span>
1945
+
1946
+
1947
+ <span class='type'>(<tt>String</tt>)</span>
1948
+
1949
+
1950
+
1951
+ &mdash;
1952
+ <div class='inline'>
1953
+ <p>Event name</p>
1954
+ </div>
1955
+
1956
+ </li>
1957
+
1958
+ </ul>
1959
+
1960
+ <p class="tag_title">Returns:</p>
1961
+ <ul class="return">
1962
+
1963
+ <li>
1964
+
1965
+
1966
+ <span class='type'>(<tt>Boolean</tt>)</span>
1967
+
1968
+
1969
+
1970
+ &mdash;
1971
+ <div class='inline'>
1972
+ <p>True if the event routes to metrics</p>
1973
+ </div>
1974
+
1975
+ </li>
1976
+
1977
+ </ul>
1978
+
1979
+ </div><table class="source_code">
1980
+ <tr>
1981
+ <td>
1982
+ <pre class="lines">
1983
+
1984
+
1985
+ 133
1986
+ 134
1987
+ 135
1988
+ 136
1989
+ 137
1990
+ 138</pre>
1991
+ </td>
1992
+ <td>
1993
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 133</span>
1994
+
1995
+ <span class='kw'>def</span> <span class='id identifier rubyid_routes_to_metrics?'>routes_to_metrics?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1996
+ <span class='id identifier rubyid_mapping'>mapping</span> <span class='op'>=</span> <span class='id identifier rubyid_mapping_for'>mapping_for</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
1997
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_mapping'>mapping</span>
1998
+
1999
+ <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_active?'>active?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_metrics?'>routes_to_metrics?</span>
2000
+ <span class='kw'>end</span></pre>
2001
+ </td>
2002
+ </tr>
2003
+ </table>
2004
+ </div>
2005
+
2006
+ <div class="method_details ">
2007
+ <h3 class="signature " id="routes_to_traces?-instance_method">
2008
+
2009
+ #<strong>routes_to_traces?</strong>(event_name) &#x21d2; <tt>Boolean</tt>
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+ </h3><div class="docstring">
2016
+ <div class="discussion">
2017
+
2018
+ <p>Check if an event routes to traces</p>
2019
+
2020
+
2021
+ </div>
2022
+ </div>
2023
+ <div class="tags">
2024
+ <p class="tag_title">Parameters:</p>
2025
+ <ul class="param">
2026
+
2027
+ <li>
2028
+
2029
+ <span class='name'>event_name</span>
2030
+
2031
+
2032
+ <span class='type'>(<tt>String</tt>)</span>
2033
+
2034
+
2035
+
2036
+ &mdash;
2037
+ <div class='inline'>
2038
+ <p>Event name</p>
2039
+ </div>
2040
+
2041
+ </li>
2042
+
2043
+ </ul>
2044
+
2045
+ <p class="tag_title">Returns:</p>
2046
+ <ul class="return">
2047
+
2048
+ <li>
2049
+
2050
+
2051
+ <span class='type'>(<tt>Boolean</tt>)</span>
2052
+
2053
+
2054
+
2055
+ &mdash;
2056
+ <div class='inline'>
2057
+ <p>True if the event routes to traces</p>
2058
+ </div>
2059
+
2060
+ </li>
2061
+
2062
+ </ul>
2063
+
2064
+ </div><table class="source_code">
2065
+ <tr>
2066
+ <td>
2067
+ <pre class="lines">
2068
+
2069
+
2070
+ 122
2071
+ 123
2072
+ 124
2073
+ 125
2074
+ 126
2075
+ 127</pre>
2076
+ </td>
2077
+ <td>
2078
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 122</span>
2079
+
2080
+ <span class='kw'>def</span> <span class='id identifier rubyid_routes_to_traces?'>routes_to_traces?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
2081
+ <span class='id identifier rubyid_mapping'>mapping</span> <span class='op'>=</span> <span class='id identifier rubyid_mapping_for'>mapping_for</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
2082
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_mapping'>mapping</span>
2083
+
2084
+ <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_active?'>active?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_mapping'>mapping</span><span class='period'>.</span><span class='id identifier rubyid_routes_to_traces?'>routes_to_traces?</span>
2085
+ <span class='kw'>end</span></pre>
2086
+ </td>
2087
+ </tr>
2088
+ </table>
2089
+ </div>
2090
+
2091
+ <div class="method_details ">
2092
+ <h3 class="signature " id="routing_stats-instance_method">
2093
+
2094
+ #<strong>routing_stats</strong> &#x21d2; <tt>Hash</tt>
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+ </h3><div class="docstring">
2101
+ <div class="discussion">
2102
+
2103
+ <p>Get routing statistics for debugging</p>
2104
+
2105
+
2106
+ </div>
2107
+ </div>
2108
+ <div class="tags">
2109
+
2110
+ <p class="tag_title">Returns:</p>
2111
+ <ul class="return">
2112
+
2113
+ <li>
2114
+
2115
+
2116
+ <span class='type'>(<tt>Hash</tt>)</span>
2117
+
2118
+
2119
+
2120
+ &mdash;
2121
+ <div class='inline'>
2122
+ <p>Statistics about current routing configuration</p>
2123
+ </div>
2124
+
2125
+ </li>
2126
+
2127
+ </ul>
2128
+
2129
+ </div><table class="source_code">
2130
+ <tr>
2131
+ <td>
2132
+ <pre class="lines">
2133
+
2134
+
2135
+ 172
2136
+ 173
2137
+ 174
2138
+ 175
2139
+ 176
2140
+ 177
2141
+ 178
2142
+ 179
2143
+ 180
2144
+ 181
2145
+ 182</pre>
2146
+ </td>
2147
+ <td>
2148
+ <pre class="code"><span class="info file"># File 'lib/tasker/telemetry/event_router.rb', line 172</span>
2149
+
2150
+ <span class='kw'>def</span> <span class='id identifier rubyid_routing_stats'>routing_stats</span>
2151
+ <span class='lbrace'>{</span>
2152
+ <span class='label'>total_mappings:</span> <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
2153
+ <span class='label'>trace_events:</span> <span class='id identifier rubyid_trace_events'>trace_events</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
2154
+ <span class='label'>metrics_events:</span> <span class='id identifier rubyid_metrics_events'>metrics_events</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
2155
+ <span class='label'>log_events:</span> <span class='id identifier rubyid_log_events'>log_events</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
2156
+ <span class='label'>enabled_mappings:</span> <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:enabled</span><span class='rparen'>)</span><span class='comma'>,</span>
2157
+ <span class='label'>high_priority:</span> <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_m'>m</span><span class='op'>|</span> <span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_priority'>priority</span> <span class='op'>==</span> <span class='symbol'>:high</span> <span class='rbrace'>}</span><span class='comma'>,</span>
2158
+ <span class='label'>sampled_mappings:</span> <span class='id identifier rubyid_mappings'>mappings</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_m'>m</span><span class='op'>|</span> <span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_sampling_rate'>sampling_rate</span> <span class='op'>&lt;</span> <span class='float'>1.0</span> <span class='rbrace'>}</span>
2159
+ <span class='rbrace'>}</span>
2160
+ <span class='kw'>end</span></pre>
2161
+ </td>
2162
+ </tr>
2163
+ </table>
2164
+ </div>
2165
+
2166
+ </div>
2167
+
2168
+ </div>
2169
+
2170
+ <div id="footer">
2171
+ Generated on Tue Jul 1 16:47:37 2025 by
2172
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2173
+ 0.9.37 (ruby-3.2.4).
2174
+ </div>
2175
+
2176
+ </div>
2177
+ </body>
2178
+ </html>