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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +443 -0
- data/Rakefile +10 -0
- data/app/controllers/tasker/analytics_controller.rb +179 -0
- data/app/controllers/tasker/application_controller.rb +45 -0
- data/app/controllers/tasker/graphql_controller.rb +193 -0
- data/app/controllers/tasker/handlers_controller.rb +217 -0
- data/app/controllers/tasker/health_controller.rb +229 -0
- data/app/controllers/tasker/metrics_controller.rb +111 -0
- data/app/controllers/tasker/page_sort.rb +97 -0
- data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
- data/app/controllers/tasker/tasks_controller.rb +123 -0
- data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
- data/app/graphql/examples/all_tasks.graphql +22 -0
- data/app/graphql/examples/pending_tasks.graphql +23 -0
- data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
- data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
- data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
- data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
- data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
- data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
- data/app/graphql/tasker/graph_ql_types.rb +42 -0
- data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
- data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
- data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
- data/app/graphql/tasker/mutations/create_task.rb +52 -0
- data/app/graphql/tasker/mutations/update_step.rb +36 -0
- data/app/graphql/tasker/mutations/update_task.rb +41 -0
- data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
- data/app/graphql/tasker/queries/all_tasks.rb +23 -0
- data/app/graphql/tasker/queries/base_query.rb +9 -0
- data/app/graphql/tasker/queries/helpers.rb +16 -0
- data/app/graphql/tasker/queries/one_step.rb +24 -0
- data/app/graphql/tasker/queries/one_task.rb +18 -0
- data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
- data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
- data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
- data/app/jobs/tasker/application_job.rb +8 -0
- data/app/jobs/tasker/metrics_export_job.rb +252 -0
- data/app/jobs/tasker/task_runner_job.rb +224 -0
- data/app/models/tasker/annotation_type.rb +26 -0
- data/app/models/tasker/application_record.rb +70 -0
- data/app/models/tasker/dependent_system.rb +26 -0
- data/app/models/tasker/dependent_system_object_map.rb +64 -0
- data/app/models/tasker/diagram/edge.rb +106 -0
- data/app/models/tasker/diagram/flowchart.rb +137 -0
- data/app/models/tasker/diagram/node.rb +99 -0
- data/app/models/tasker/named_step.rb +41 -0
- data/app/models/tasker/named_task.rb +121 -0
- data/app/models/tasker/named_tasks_named_step.rb +82 -0
- data/app/models/tasker/step_dag_relationship.rb +65 -0
- data/app/models/tasker/step_readiness_status.rb +59 -0
- data/app/models/tasker/task.rb +424 -0
- data/app/models/tasker/task_annotation.rb +36 -0
- data/app/models/tasker/task_diagram.rb +332 -0
- data/app/models/tasker/task_execution_context.rb +29 -0
- data/app/models/tasker/task_namespace.rb +41 -0
- data/app/models/tasker/task_transition.rb +235 -0
- data/app/models/tasker/workflow_step.rb +461 -0
- data/app/models/tasker/workflow_step_edge.rb +94 -0
- data/app/models/tasker/workflow_step_transition.rb +434 -0
- data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
- data/app/serializers/tasker/handler_serializer.rb +109 -0
- data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
- data/app/serializers/tasker/task_serializer.rb +168 -0
- data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
- data/app/services/tasker/analytics_service.rb +409 -0
- data/app/views/tasker/task/_diagram.html.erb +32 -0
- data/config/initializers/dry_struct.rb +11 -0
- data/config/initializers/statesman.rb +6 -0
- data/config/initializers/tasker_orchestration.rb +17 -0
- data/config/initializers/time_formats.rb +4 -0
- data/config/routes.rb +34 -0
- data/config/tasker/subscriptions/example_integrations.yml +67 -0
- data/config/tasker/system_events.yml +305 -0
- data/db/functions/calculate_dependency_levels_v01.sql +45 -0
- data/db/functions/get_analytics_metrics_v01.sql +137 -0
- data/db/functions/get_slowest_steps_v01.sql +82 -0
- data/db/functions/get_slowest_tasks_v01.sql +96 -0
- data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
- data/db/functions/get_step_readiness_status_v01.sql +139 -0
- data/db/functions/get_system_health_counts_v01.sql +108 -0
- data/db/functions/get_task_execution_context_v01.sql +108 -0
- data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
- data/db/init/schema.sql +2277 -0
- data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
- data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
- data/docs/APPLICATION_GENERATOR.md +384 -0
- data/docs/AUTH.md +1780 -0
- data/docs/CIRCUIT_BREAKER.md +224 -0
- data/docs/DEVELOPER_GUIDE.md +2665 -0
- data/docs/EVENT_SYSTEM.md +637 -0
- data/docs/EXECUTION_CONFIGURATION.md +341 -0
- data/docs/FLOW_CHART.md +149 -0
- data/docs/HEALTH.md +542 -0
- data/docs/METRICS.md +731 -0
- data/docs/OPTIMIZATION_PLAN.md +1479 -0
- data/docs/OVERVIEW.md +552 -0
- data/docs/QUICK_START.md +270 -0
- data/docs/REGISTRY_SYSTEMS.md +373 -0
- data/docs/REST_API.md +632 -0
- data/docs/ROADMAP.md +221 -0
- data/docs/SQL_FUNCTIONS.md +1408 -0
- data/docs/TASK_DIAGRAM.md +252 -0
- data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
- data/docs/TELEMETRY.md +795 -0
- data/docs/TROUBLESHOOTING.md +756 -0
- data/docs/TaskHandlerGenerator.html +255 -0
- data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
- data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
- data/docs/Tasker/Analysis.html +117 -0
- data/docs/Tasker/AnalyticsController.html +450 -0
- data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
- data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
- data/docs/Tasker/AnalyticsService.html +2221 -0
- data/docs/Tasker/AnnotationType.html +137 -0
- data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
- data/docs/Tasker/ApplicationController.html +147 -0
- data/docs/Tasker/ApplicationJob.html +128 -0
- data/docs/Tasker/ApplicationRecord.html +378 -0
- data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
- data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
- data/docs/Tasker/Authentication/Coordinator.html +242 -0
- data/docs/Tasker/Authentication/Interface.html +560 -0
- data/docs/Tasker/Authentication/InterfaceError.html +124 -0
- data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
- data/docs/Tasker/Authentication.html +119 -0
- data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
- data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
- data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
- data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
- data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
- data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
- data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
- data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
- data/docs/Tasker/Authorization.html +582 -0
- data/docs/Tasker/CacheCapabilities.html +167 -0
- data/docs/Tasker/CacheStrategy.html +1297 -0
- data/docs/Tasker/Concerns/Authenticatable.html +116 -0
- data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
- data/docs/Tasker/Concerns/Authorizable.html +816 -0
- data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
- data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
- data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
- data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
- data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
- data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
- data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
- data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
- data/docs/Tasker/Concerns.html +117 -0
- data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
- data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
- data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
- data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
- data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
- data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
- data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
- data/docs/Tasker/Configuration.html +1669 -0
- data/docs/Tasker/ConfigurationError.html +143 -0
- data/docs/Tasker/ConfiguredTask.html +514 -0
- data/docs/Tasker/Constants/EventDefinitions.html +590 -0
- data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
- data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
- data/docs/Tasker/Constants/RegistryEvents.html +285 -0
- data/docs/Tasker/Constants/StepEvents.html +177 -0
- data/docs/Tasker/Constants/TaskEvents.html +167 -0
- data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
- data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
- data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
- data/docs/Tasker/Constants/TaskExecution.html +126 -0
- data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
- data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
- data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
- data/docs/Tasker/Constants/TaskFinalization.html +126 -0
- data/docs/Tasker/Constants/TaskStatuses.html +223 -0
- data/docs/Tasker/Constants/TestEvents.html +163 -0
- data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
- data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
- data/docs/Tasker/Constants.html +561 -0
- data/docs/Tasker/DependentSystem.html +137 -0
- data/docs/Tasker/DependentSystemObjectMap.html +250 -0
- data/docs/Tasker/DetectorRegistry.html +598 -0
- data/docs/Tasker/Diagram/Edge.html +1191 -0
- data/docs/Tasker/Diagram/Flowchart.html +1539 -0
- data/docs/Tasker/Diagram/Node.html +1165 -0
- data/docs/Tasker/Diagram.html +117 -0
- data/docs/Tasker/Engine.html +215 -0
- data/docs/Tasker/Error.html +139 -0
- data/docs/Tasker/Events/Bus.html +1226 -0
- data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
- data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
- data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
- data/docs/Tasker/Events/Catalog.html +1291 -0
- data/docs/Tasker/Events/CustomRegistry.html +943 -0
- data/docs/Tasker/Events/DefinitionLoader.html +575 -0
- data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
- data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
- data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
- data/docs/Tasker/Events/Publisher.html +365 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
- data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
- data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
- data/docs/Tasker/Events/Subscribers.html +117 -0
- data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
- data/docs/Tasker/Events.html +294 -0
- data/docs/Tasker/EventsGenerator.html +459 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
- data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
- data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
- data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
- data/docs/Tasker/Functions.html +117 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
- data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
- data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
- data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
- data/docs/Tasker/Generators.html +117 -0
- data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
- data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
- data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
- data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
- data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
- data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
- data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
- data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
- data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
- data/docs/Tasker/GraphQLTypes.html +130 -0
- data/docs/Tasker/GraphqlController.html +251 -0
- data/docs/Tasker/HandlerFactory.html +1518 -0
- data/docs/Tasker/HandlerSerializer.html +682 -0
- data/docs/Tasker/HandlersController.html +574 -0
- data/docs/Tasker/HashIdentityStrategy.html +278 -0
- data/docs/Tasker/Health/ReadinessChecker.html +712 -0
- data/docs/Tasker/Health/StatusChecker.html +653 -0
- data/docs/Tasker/Health.html +117 -0
- data/docs/Tasker/HealthController.html +523 -0
- data/docs/Tasker/IdentityStrategy.html +276 -0
- data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
- data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events.html +204 -0
- data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
- data/docs/Tasker/LifecycleEvents.html +799 -0
- data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
- data/docs/Tasker/Logging.html +115 -0
- data/docs/Tasker/MetricsController.html +293 -0
- data/docs/Tasker/MetricsExportJob.html +414 -0
- data/docs/Tasker/Mutations/BaseMutation.html +128 -0
- data/docs/Tasker/Mutations/CancelStep.html +219 -0
- data/docs/Tasker/Mutations/CancelTask.html +221 -0
- data/docs/Tasker/Mutations/CreateTask.html +243 -0
- data/docs/Tasker/Mutations/UpdateStep.html +243 -0
- data/docs/Tasker/Mutations/UpdateTask.html +243 -0
- data/docs/Tasker/Mutations.html +117 -0
- data/docs/Tasker/NamedStep.html +216 -0
- data/docs/Tasker/NamedTask.html +910 -0
- data/docs/Tasker/NamedTasksNamedStep.html +435 -0
- data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
- data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
- data/docs/Tasker/Orchestration/Coordinator.html +641 -0
- data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
- data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
- data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
- data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
- data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
- data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
- data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
- data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
- data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
- data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
- data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
- data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
- data/docs/Tasker/Orchestration.html +130 -0
- data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
- data/docs/Tasker/PageSort.html +247 -0
- data/docs/Tasker/PermanentError.html +518 -0
- data/docs/Tasker/ProceduralError.html +147 -0
- data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
- data/docs/Tasker/Queries/AllTasks.html +221 -0
- data/docs/Tasker/Queries/BaseQuery.html +128 -0
- data/docs/Tasker/Queries/Helpers.html +187 -0
- data/docs/Tasker/Queries/OneStep.html +225 -0
- data/docs/Tasker/Queries/OneTask.html +217 -0
- data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
- data/docs/Tasker/Queries/TasksByStatus.html +233 -0
- data/docs/Tasker/Queries.html +119 -0
- data/docs/Tasker/Railtie.html +124 -0
- data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
- data/docs/Tasker/Registry/EventPublisher.html +667 -0
- data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
- data/docs/Tasker/Registry/RegistrationError.html +132 -0
- data/docs/Tasker/Registry/RegistryError.html +139 -0
- data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
- data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
- data/docs/Tasker/Registry/ValidationError.html +132 -0
- data/docs/Tasker/Registry.html +119 -0
- data/docs/Tasker/RetryableError.html +515 -0
- data/docs/Tasker/StateMachine/Compatibility.html +282 -0
- data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
- data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
- data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
- data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
- data/docs/Tasker/StateMachine.html +602 -0
- data/docs/Tasker/StepDagRelationship.html +657 -0
- data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
- data/docs/Tasker/StepHandler/Api.html +884 -0
- data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
- data/docs/Tasker/StepHandler/Base.html +970 -0
- data/docs/Tasker/StepHandler.html +119 -0
- data/docs/Tasker/StepReadinessStatus.html +836 -0
- data/docs/Tasker/Task.html +2575 -0
- data/docs/Tasker/TaskAnnotation.html +137 -0
- data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
- data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
- data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
- data/docs/Tasker/TaskBuilder.html +764 -0
- data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
- data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
- data/docs/Tasker/TaskDiagram.html +548 -0
- data/docs/Tasker/TaskDiagramsController.html +240 -0
- data/docs/Tasker/TaskExecutionContext.html +469 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
- data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
- data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
- data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
- data/docs/Tasker/TaskHandler.html +271 -0
- data/docs/Tasker/TaskNamespace.html +312 -0
- data/docs/Tasker/TaskRunnerJob.html +406 -0
- data/docs/Tasker/TaskSerializer.html +474 -0
- data/docs/Tasker/TaskTransition.html +1517 -0
- data/docs/Tasker/TaskWorkflowSummary.html +988 -0
- data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
- data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema.html +384 -0
- data/docs/Tasker/TasksController.html +595 -0
- data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
- data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
- data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
- data/docs/Tasker/Telemetry/Events.html +115 -0
- data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
- data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
- data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
- data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
- data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
- data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
- data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
- data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
- data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
- data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
- data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
- data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
- data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
- data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
- data/docs/Tasker/Telemetry/Plugins.html +117 -0
- data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
- data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
- data/docs/Tasker/Telemetry.html +130 -0
- data/docs/Tasker/Types/AuthConfig.html +886 -0
- data/docs/Tasker/Types/BackoffConfig.html +1063 -0
- data/docs/Tasker/Types/BaseConfig.html +227 -0
- data/docs/Tasker/Types/CacheConfig.html +1731 -0
- data/docs/Tasker/Types/DatabaseConfig.html +388 -0
- data/docs/Tasker/Types/DependencyGraph.html +526 -0
- data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
- data/docs/Tasker/Types/EngineConfig.html +1181 -0
- data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
- data/docs/Tasker/Types/GraphEdge.html +517 -0
- data/docs/Tasker/Types/GraphMetadata.html +781 -0
- data/docs/Tasker/Types/GraphNode.html +694 -0
- data/docs/Tasker/Types/HealthConfig.html +784 -0
- data/docs/Tasker/Types/StepSequence.html +353 -0
- data/docs/Tasker/Types/StepTemplate.html +1193 -0
- data/docs/Tasker/Types/TaskRequest.html +1179 -0
- data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
- data/docs/Tasker/Types.html +154 -0
- data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
- data/docs/Tasker/WorkflowStep.html +2724 -0
- data/docs/Tasker/WorkflowStepEdge.html +304 -0
- data/docs/Tasker/WorkflowStepSerializer.html +305 -0
- data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
- data/docs/Tasker/WorkflowStepTransition.html +2201 -0
- data/docs/Tasker/WorkflowStepsController.html +462 -0
- data/docs/Tasker.html +452 -0
- data/docs/VISION.md +584 -0
- data/docs/WHY.md +21 -0
- data/docs/_index.html +2375 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/events/migration_plan_outcomes.md +80 -0
- data/docs/file.README.html +541 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +541 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +9182 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/generators/tasker/authenticator_generator.rb +301 -0
- data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
- data/lib/generators/tasker/events_generator.rb +91 -0
- data/lib/generators/tasker/subscriber_generator.rb +107 -0
- data/lib/generators/tasker/task_handler_generator.rb +138 -0
- data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
- data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
- data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
- data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
- data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
- data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
- data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
- data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
- data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
- data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
- data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
- data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
- data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
- data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
- data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
- data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
- data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
- data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
- data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
- data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
- data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
- data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
- data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
- data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
- data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
- data/lib/tasker/authentication/coordinator.rb +78 -0
- data/lib/tasker/authentication/errors.rb +9 -0
- data/lib/tasker/authentication/interface.rb +36 -0
- data/lib/tasker/authentication/none_authenticator.rb +26 -0
- data/lib/tasker/authorization/base_coordinator.rb +112 -0
- data/lib/tasker/authorization/errors.rb +26 -0
- data/lib/tasker/authorization/resource_constants.rb +74 -0
- data/lib/tasker/authorization/resource_registry.rb +143 -0
- data/lib/tasker/authorization.rb +75 -0
- data/lib/tasker/cache_capabilities.rb +131 -0
- data/lib/tasker/cache_strategy.rb +469 -0
- data/lib/tasker/concerns/authenticatable.rb +41 -0
- data/lib/tasker/concerns/authorizable.rb +204 -0
- data/lib/tasker/concerns/controller_authorizable.rb +124 -0
- data/lib/tasker/concerns/event_publisher.rb +716 -0
- data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
- data/lib/tasker/concerns/state_machine_base.rb +218 -0
- data/lib/tasker/concerns/structured_logging.rb +387 -0
- data/lib/tasker/configuration.rb +325 -0
- data/lib/tasker/constants/event_definitions.rb +147 -0
- data/lib/tasker/constants/registry_events.rb +54 -0
- data/lib/tasker/constants.rb +417 -0
- data/lib/tasker/engine.rb +90 -0
- data/lib/tasker/errors.rb +90 -0
- data/lib/tasker/events/catalog.rb +432 -0
- data/lib/tasker/events/custom_registry.rb +175 -0
- data/lib/tasker/events/definition_loader.rb +199 -0
- data/lib/tasker/events/event_payload_builder.rb +461 -0
- data/lib/tasker/events/publisher.rb +149 -0
- data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
- data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
- data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
- data/lib/tasker/events/subscription_loader.rb +161 -0
- data/lib/tasker/events.rb +37 -0
- data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
- data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
- data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
- data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
- data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
- data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
- data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
- data/lib/tasker/functions/function_wrapper.rb +42 -0
- data/lib/tasker/functions.rb +12 -0
- data/lib/tasker/handler_factory.rb +322 -0
- data/lib/tasker/health/readiness_checker.rb +186 -0
- data/lib/tasker/health/status_checker.rb +203 -0
- data/lib/tasker/identity_strategy.rb +38 -0
- data/lib/tasker/logging/correlation_id_generator.rb +120 -0
- data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
- data/lib/tasker/orchestration/connection_builder.rb +122 -0
- data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
- data/lib/tasker/orchestration/coordinator.rb +119 -0
- data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
- data/lib/tasker/orchestration/plugin_integration.rb +124 -0
- data/lib/tasker/orchestration/response_processor.rb +168 -0
- data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
- data/lib/tasker/orchestration/step_executor.rb +941 -0
- data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
- data/lib/tasker/orchestration/task_finalizer.rb +564 -0
- data/lib/tasker/orchestration/task_initializer.rb +140 -0
- data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
- data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
- data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
- data/lib/tasker/orchestration.rb +45 -0
- data/lib/tasker/railtie.rb +9 -0
- data/lib/tasker/registry/base_registry.rb +177 -0
- data/lib/tasker/registry/event_publisher.rb +91 -0
- data/lib/tasker/registry/interface_validator.rb +140 -0
- data/lib/tasker/registry/statistics_collector.rb +381 -0
- data/lib/tasker/registry/subscriber_registry.rb +285 -0
- data/lib/tasker/registry.rb +22 -0
- data/lib/tasker/state_machine/step_state_machine.rb +508 -0
- data/lib/tasker/state_machine/task_state_machine.rb +192 -0
- data/lib/tasker/state_machine.rb +83 -0
- data/lib/tasker/step_handler/api.rb +410 -0
- data/lib/tasker/step_handler/base.rb +206 -0
- data/lib/tasker/task_builder.rb +432 -0
- data/lib/tasker/task_handler/class_methods.rb +324 -0
- data/lib/tasker/task_handler/instance_methods.rb +293 -0
- data/lib/tasker/task_handler/step_group.rb +182 -0
- data/lib/tasker/task_handler.rb +43 -0
- data/lib/tasker/telemetry/event_mapping.rb +126 -0
- data/lib/tasker/telemetry/event_router.rb +318 -0
- data/lib/tasker/telemetry/events/export_events.rb +38 -0
- data/lib/tasker/telemetry/export_coordinator.rb +497 -0
- data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
- data/lib/tasker/telemetry/log_backend.rb +224 -0
- data/lib/tasker/telemetry/metric_types.rb +368 -0
- data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
- data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
- data/lib/tasker/telemetry/plugin_registry.rb +333 -0
- data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
- data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
- data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
- data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
- data/lib/tasker/telemetry/trace_backend.rb +186 -0
- data/lib/tasker/telemetry.rb +59 -0
- data/lib/tasker/types/auth_config.rb +81 -0
- data/lib/tasker/types/backoff_config.rb +142 -0
- data/lib/tasker/types/cache_config.rb +257 -0
- data/lib/tasker/types/database_config.rb +39 -0
- data/lib/tasker/types/dependency_graph.rb +225 -0
- data/lib/tasker/types/dependency_graph_config.rb +149 -0
- data/lib/tasker/types/engine_config.rb +131 -0
- data/lib/tasker/types/execution_config.rb +289 -0
- data/lib/tasker/types/health_config.rb +84 -0
- data/lib/tasker/types/step_sequence.rb +24 -0
- data/lib/tasker/types/step_template.rb +63 -0
- data/lib/tasker/types/task_request.rb +60 -0
- data/lib/tasker/types/telemetry_config.rb +273 -0
- data/lib/tasker/types.rb +64 -0
- data/lib/tasker/version.rb +7 -0
- data/lib/tasker.rb +82 -0
- data/lib/tasks/tasker_tasks.rake +302 -0
- metadata +958 -0
@@ -0,0 +1,1504 @@
|
|
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::Registry::SubscriberRegistry
|
8
|
+
|
9
|
+
— 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::Registry::SubscriberRegistry";
|
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 (S)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> » <span class='title'><span class='object_link'><a href="../Registry.html" title="Tasker::Registry (module)">Registry</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">SubscriberRegistry</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::Registry::SubscriberRegistry
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
<dl>
|
70
|
+
<dt>Inherits:</dt>
|
71
|
+
<dd>
|
72
|
+
<span class="inheritName"><span class='object_link'><a href="BaseRegistry.html" title="Tasker::Registry::BaseRegistry (class)">BaseRegistry</a></span></span>
|
73
|
+
|
74
|
+
<ul class="fullTree">
|
75
|
+
<li>Object</li>
|
76
|
+
|
77
|
+
<li class="next"><span class='object_link'><a href="BaseRegistry.html" title="Tasker::Registry::BaseRegistry (class)">BaseRegistry</a></span></li>
|
78
|
+
|
79
|
+
<li class="next">Tasker::Registry::SubscriberRegistry</li>
|
80
|
+
|
81
|
+
</ul>
|
82
|
+
<a href="#" class="inheritanceTree">show all</a>
|
83
|
+
|
84
|
+
</dd>
|
85
|
+
</dl>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
<dl>
|
93
|
+
<dt>Includes:</dt>
|
94
|
+
<dd>Singleton</dd>
|
95
|
+
</dl>
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
<dl>
|
103
|
+
<dt>Defined in:</dt>
|
104
|
+
<dd>lib/tasker/registry/subscriber_registry.rb</dd>
|
105
|
+
</dl>
|
106
|
+
|
107
|
+
</div>
|
108
|
+
|
109
|
+
<h2>Overview</h2><div class="docstring">
|
110
|
+
<div class="discussion">
|
111
|
+
|
112
|
+
<p>Registry for managing event subscribers</p>
|
113
|
+
|
114
|
+
<p>Provides centralized management of event subscribers with discovery, registration, and event-based lookup capabilities. Integrates with the existing event system to provide comprehensive subscriber coordination.</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>Register a subscriber</p>
|
127
|
+
</div></h5>
|
128
|
+
|
129
|
+
<pre class="example code"><code><span class='id identifier rubyid_registry'>registry</span> <span class='op'>=</span> <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="../Registry.html" title="Tasker::Registry (module)">Registry</a></span></span><span class='op'>::</span><span class='const'>SubscriberRegistry</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span>
|
130
|
+
<span class='id identifier rubyid_registry'>registry</span><span class='period'>.</span><span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='const'>MySubscriber</span><span class='comma'>,</span> <span class='label'>events:</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>task.created</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>task.completed</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span></code></pre>
|
131
|
+
|
132
|
+
|
133
|
+
<h5 class="example_title"><div class='inline'>
|
134
|
+
<p>Find subscribers for an event</p>
|
135
|
+
</div></h5>
|
136
|
+
|
137
|
+
<pre class="example code"><code><span class='id identifier rubyid_subscribers'>subscribers</span> <span class='op'>=</span> <span class='id identifier rubyid_registry'>registry</span><span class='period'>.</span><span class='id identifier rubyid_subscribers_for_event'>subscribers_for_event</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>task.created</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span></code></pre>
|
138
|
+
|
139
|
+
|
140
|
+
<h5 class="example_title"><div class='inline'>
|
141
|
+
<p>Auto-discover subscribers</p>
|
142
|
+
</div></h5>
|
143
|
+
|
144
|
+
<pre class="example code"><code><span class='id identifier rubyid_registry'>registry</span><span class='period'>.</span><span class='id identifier rubyid_auto_discover_subscribers'>auto_discover_subscribers</span></code></pre>
|
145
|
+
|
146
|
+
</div>
|
147
|
+
|
148
|
+
|
149
|
+
</div>
|
150
|
+
|
151
|
+
|
152
|
+
<h2>Constant Summary</h2>
|
153
|
+
|
154
|
+
<h3 class="inherited">Constants included
|
155
|
+
from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
|
156
|
+
<p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#CORRELATION_ID_KEY-constant" title="Tasker::Concerns::StructuredLogging::CORRELATION_ID_KEY (constant)">Concerns::StructuredLogging::CORRELATION_ID_KEY</a></span></p>
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
<h2>
|
164
|
+
Instance Method Summary
|
165
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
166
|
+
</h2>
|
167
|
+
|
168
|
+
<ul class="summary">
|
169
|
+
|
170
|
+
<li class="public ">
|
171
|
+
<span class="summary_signature">
|
172
|
+
|
173
|
+
<a href="#all_items-instance_method" title="#all_items (instance method)">#<strong>all_items</strong> ⇒ Hash </a>
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
</span>
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
<span class="summary_desc"><div class='inline'>
|
188
|
+
<p>Get all registered subscribers (required by BaseRegistry).</p>
|
189
|
+
</div></span>
|
190
|
+
|
191
|
+
</li>
|
192
|
+
|
193
|
+
|
194
|
+
<li class="public ">
|
195
|
+
<span class="summary_signature">
|
196
|
+
|
197
|
+
<a href="#all_subscribers-instance_method" title="#all_subscribers (instance method)">#<strong>all_subscribers</strong> ⇒ Hash </a>
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
</span>
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
<span class="summary_desc"><div class='inline'>
|
212
|
+
<p>Get all registered subscribers.</p>
|
213
|
+
</div></span>
|
214
|
+
|
215
|
+
</li>
|
216
|
+
|
217
|
+
|
218
|
+
<li class="public ">
|
219
|
+
<span class="summary_signature">
|
220
|
+
|
221
|
+
<a href="#auto_discover_subscribers-instance_method" title="#auto_discover_subscribers (instance method)">#<strong>auto_discover_subscribers</strong>(directory = nil) ⇒ Integer </a>
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
</span>
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
<span class="summary_desc"><div class='inline'>
|
236
|
+
<p>Auto-discover subscribers in the subscribers directory.</p>
|
237
|
+
</div></span>
|
238
|
+
|
239
|
+
</li>
|
240
|
+
|
241
|
+
|
242
|
+
<li class="public ">
|
243
|
+
<span class="summary_signature">
|
244
|
+
|
245
|
+
<a href="#clear!-instance_method" title="#clear! (instance method)">#<strong>clear!</strong> ⇒ Boolean </a>
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
</span>
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
<span class="summary_desc"><div class='inline'>
|
260
|
+
<p>Clear all registered subscribers (required by BaseRegistry).</p>
|
261
|
+
</div></span>
|
262
|
+
|
263
|
+
</li>
|
264
|
+
|
265
|
+
|
266
|
+
<li class="public ">
|
267
|
+
<span class="summary_signature">
|
268
|
+
|
269
|
+
<a href="#has_subscribers%3F-instance_method" title="#has_subscribers? (instance method)">#<strong>has_subscribers?</strong>(event_name) ⇒ Boolean </a>
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
</span>
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
<span class="summary_desc"><div class='inline'>
|
284
|
+
<p>Check if an event has any subscribers.</p>
|
285
|
+
</div></span>
|
286
|
+
|
287
|
+
</li>
|
288
|
+
|
289
|
+
|
290
|
+
<li class="public ">
|
291
|
+
<span class="summary_signature">
|
292
|
+
|
293
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> ⇒ SubscriberRegistry </a>
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
</span>
|
298
|
+
|
299
|
+
|
300
|
+
<span class="note title constructor">constructor</span>
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
<span class="summary_desc"><div class='inline'>
|
310
|
+
<p>A new instance of SubscriberRegistry.</p>
|
311
|
+
</div></span>
|
312
|
+
|
313
|
+
</li>
|
314
|
+
|
315
|
+
|
316
|
+
<li class="public ">
|
317
|
+
<span class="summary_signature">
|
318
|
+
|
319
|
+
<a href="#register-instance_method" title="#register (instance method)">#<strong>register</strong>(subscriber_class, events: [], replace: false, **options) ⇒ Boolean </a>
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
</span>
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
<span class="summary_desc"><div class='inline'>
|
334
|
+
<p>Register an event subscriber.</p>
|
335
|
+
</div></span>
|
336
|
+
|
337
|
+
</li>
|
338
|
+
|
339
|
+
|
340
|
+
<li class="public ">
|
341
|
+
<span class="summary_signature">
|
342
|
+
|
343
|
+
<a href="#stats-instance_method" title="#stats (instance method)">#<strong>stats</strong> ⇒ Hash </a>
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
</span>
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
<span class="summary_desc"><div class='inline'>
|
358
|
+
<p>Get comprehensive registry statistics.</p>
|
359
|
+
</div></span>
|
360
|
+
|
361
|
+
</li>
|
362
|
+
|
363
|
+
|
364
|
+
<li class="public ">
|
365
|
+
<span class="summary_signature">
|
366
|
+
|
367
|
+
<a href="#subscribers_for_event-instance_method" title="#subscribers_for_event (instance method)">#<strong>subscribers_for_event</strong>(event_name) ⇒ Array<Hash> </a>
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
</span>
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
<span class="summary_desc"><div class='inline'>
|
382
|
+
<p>Get subscribers for a specific event.</p>
|
383
|
+
</div></span>
|
384
|
+
|
385
|
+
</li>
|
386
|
+
|
387
|
+
|
388
|
+
<li class="public ">
|
389
|
+
<span class="summary_signature">
|
390
|
+
|
391
|
+
<a href="#supported_events-instance_method" title="#supported_events (instance method)">#<strong>supported_events</strong> ⇒ Array<String> </a>
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
</span>
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
<span class="summary_desc"><div class='inline'>
|
406
|
+
<p>Get supported events across all subscribers.</p>
|
407
|
+
</div></span>
|
408
|
+
|
409
|
+
</li>
|
410
|
+
|
411
|
+
|
412
|
+
<li class="public ">
|
413
|
+
<span class="summary_signature">
|
414
|
+
|
415
|
+
<a href="#unregister-instance_method" title="#unregister (instance method)">#<strong>unregister</strong>(subscriber_class) ⇒ Boolean </a>
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
</span>
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
<span class="summary_desc"><div class='inline'>
|
430
|
+
<p>Unregister an event subscriber.</p>
|
431
|
+
</div></span>
|
432
|
+
|
433
|
+
</li>
|
434
|
+
|
435
|
+
|
436
|
+
</ul>
|
437
|
+
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
<h3 class="inherited">Methods inherited from <span class='object_link'><a href="BaseRegistry.html" title="Tasker::Registry::BaseRegistry (class)">BaseRegistry</a></span></h3>
|
450
|
+
<p class="inherited"><span class='object_link'><a href="BaseRegistry.html#base_stats-instance_method" title="Tasker::Registry::BaseRegistry#base_stats (method)">#base_stats</a></span>, <span class='object_link'><a href="BaseRegistry.html#health_check-instance_method" title="Tasker::Registry::BaseRegistry#health_check (method)">#health_check</a></span>, <span class='object_link'><a href="BaseRegistry.html#healthy%3F-instance_method" title="Tasker::Registry::BaseRegistry#healthy? (method)">#healthy?</a></span>, <span class='object_link'><a href="BaseRegistry.html#log_registration-instance_method" title="Tasker::Registry::BaseRegistry#log_registration (method)">#log_registration</a></span>, <span class='object_link'><a href="BaseRegistry.html#log_registry_error-instance_method" title="Tasker::Registry::BaseRegistry#log_registry_error (method)">#log_registry_error</a></span>, <span class='object_link'><a href="BaseRegistry.html#log_registry_operation-instance_method" title="Tasker::Registry::BaseRegistry#log_registry_operation (method)">#log_registry_operation</a></span>, <span class='object_link'><a href="BaseRegistry.html#log_unregistration-instance_method" title="Tasker::Registry::BaseRegistry#log_unregistration (method)">#log_unregistration</a></span>, <span class='object_link'><a href="BaseRegistry.html#log_validation_failure-instance_method" title="Tasker::Registry::BaseRegistry#log_validation_failure (method)">#log_validation_failure</a></span>, <span class='object_link'><a href="BaseRegistry.html#thread_safe_operation-instance_method" title="Tasker::Registry::BaseRegistry#thread_safe_operation (method)">#thread_safe_operation</a></span>, <span class='object_link'><a href="BaseRegistry.html#validate_registration_params!-instance_method" title="Tasker::Registry::BaseRegistry#validate_registration_params! (method)">#validate_registration_params!</a></span></p>
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
|
460
|
+
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
|
461
|
+
<p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id (method)">#correlation_id</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id=-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id= (method)">#correlation_id=</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_exception-instance_method" title="Tasker::Concerns::StructuredLogging#log_exception (method)">#log_exception</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_orchestration_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_orchestration_event (method)">#log_orchestration_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_performance_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_performance_event (method)">#log_performance_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_step_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_step_event (method)">#log_step_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_structured-instance_method" title="Tasker::Concerns::StructuredLogging#log_structured (method)">#log_structured</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_task_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_task_event (method)">#log_task_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#with_correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#with_correlation_id (method)">#with_correlation_id</a></span></p>
|
462
|
+
|
463
|
+
<div id="constructor_details" class="method_details_list">
|
464
|
+
<h2>Constructor Details</h2>
|
465
|
+
|
466
|
+
<div class="method_details first">
|
467
|
+
<h3 class="signature first" id="initialize-instance_method">
|
468
|
+
|
469
|
+
#<strong>initialize</strong> ⇒ <tt><span class='object_link'><a href="" title="Tasker::Registry::SubscriberRegistry (class)">SubscriberRegistry</a></span></tt>
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
</h3><div class="docstring">
|
476
|
+
<div class="discussion">
|
477
|
+
|
478
|
+
<p>Returns a new instance of SubscriberRegistry.</p>
|
479
|
+
|
480
|
+
|
481
|
+
</div>
|
482
|
+
</div>
|
483
|
+
<div class="tags">
|
484
|
+
|
485
|
+
|
486
|
+
</div><table class="source_code">
|
487
|
+
<tr>
|
488
|
+
<td>
|
489
|
+
<pre class="lines">
|
490
|
+
|
491
|
+
|
492
|
+
28
|
493
|
+
29
|
494
|
+
30
|
495
|
+
31
|
496
|
+
32
|
497
|
+
33</pre>
|
498
|
+
</td>
|
499
|
+
<td>
|
500
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 28</span>
|
501
|
+
|
502
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
|
503
|
+
<span class='kw'>super</span>
|
504
|
+
<span class='ivar'>@subscribers</span> <span class='op'>=</span> <span class='const'>Concurrent</span><span class='op'>::</span><span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
505
|
+
<span class='ivar'>@event_mappings</span> <span class='op'>=</span> <span class='const'>Concurrent</span><span class='op'>::</span><span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
506
|
+
<span class='id identifier rubyid_log_registry_operation'>log_registry_operation</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>initialized</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>total_subscribers:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>total_events:</span> <span class='int'>0</span><span class='rparen'>)</span>
|
507
|
+
<span class='kw'>end</span></pre>
|
508
|
+
</td>
|
509
|
+
</tr>
|
510
|
+
</table>
|
511
|
+
</div>
|
512
|
+
|
513
|
+
</div>
|
514
|
+
|
515
|
+
|
516
|
+
<div id="instance_method_details" class="method_details_list">
|
517
|
+
<h2>Instance Method Details</h2>
|
518
|
+
|
519
|
+
|
520
|
+
<div class="method_details first">
|
521
|
+
<h3 class="signature first" id="all_items-instance_method">
|
522
|
+
|
523
|
+
#<strong>all_items</strong> ⇒ <tt>Hash</tt>
|
524
|
+
|
525
|
+
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
</h3><div class="docstring">
|
530
|
+
<div class="discussion">
|
531
|
+
|
532
|
+
<p>Get all registered subscribers (required by BaseRegistry)</p>
|
533
|
+
|
534
|
+
|
535
|
+
</div>
|
536
|
+
</div>
|
537
|
+
<div class="tags">
|
538
|
+
|
539
|
+
<p class="tag_title">Returns:</p>
|
540
|
+
<ul class="return">
|
541
|
+
|
542
|
+
<li>
|
543
|
+
|
544
|
+
|
545
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
—
|
550
|
+
<div class='inline'>
|
551
|
+
<p>All registered subscribers</p>
|
552
|
+
</div>
|
553
|
+
|
554
|
+
</li>
|
555
|
+
|
556
|
+
</ul>
|
557
|
+
|
558
|
+
</div><table class="source_code">
|
559
|
+
<tr>
|
560
|
+
<td>
|
561
|
+
<pre class="lines">
|
562
|
+
|
563
|
+
|
564
|
+
132
|
565
|
+
133
|
566
|
+
134</pre>
|
567
|
+
</td>
|
568
|
+
<td>
|
569
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 132</span>
|
570
|
+
|
571
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_all_items'>all_items</span>
|
572
|
+
<span class='id identifier rubyid_all_subscribers'>all_subscribers</span>
|
573
|
+
<span class='kw'>end</span></pre>
|
574
|
+
</td>
|
575
|
+
</tr>
|
576
|
+
</table>
|
577
|
+
</div>
|
578
|
+
|
579
|
+
<div class="method_details ">
|
580
|
+
<h3 class="signature " id="all_subscribers-instance_method">
|
581
|
+
|
582
|
+
#<strong>all_subscribers</strong> ⇒ <tt>Hash</tt>
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
|
588
|
+
</h3><div class="docstring">
|
589
|
+
<div class="discussion">
|
590
|
+
|
591
|
+
<p>Get all registered subscribers</p>
|
592
|
+
|
593
|
+
|
594
|
+
</div>
|
595
|
+
</div>
|
596
|
+
<div class="tags">
|
597
|
+
|
598
|
+
<p class="tag_title">Returns:</p>
|
599
|
+
<ul class="return">
|
600
|
+
|
601
|
+
<li>
|
602
|
+
|
603
|
+
|
604
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
605
|
+
|
606
|
+
|
607
|
+
|
608
|
+
—
|
609
|
+
<div class='inline'>
|
610
|
+
<p>All registered subscribers</p>
|
611
|
+
</div>
|
612
|
+
|
613
|
+
</li>
|
614
|
+
|
615
|
+
</ul>
|
616
|
+
|
617
|
+
</div><table class="source_code">
|
618
|
+
<tr>
|
619
|
+
<td>
|
620
|
+
<pre class="lines">
|
621
|
+
|
622
|
+
|
623
|
+
125
|
624
|
+
126
|
625
|
+
127</pre>
|
626
|
+
</td>
|
627
|
+
<td>
|
628
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 125</span>
|
629
|
+
|
630
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_all_subscribers'>all_subscribers</span>
|
631
|
+
<span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
|
632
|
+
<span class='kw'>end</span></pre>
|
633
|
+
</td>
|
634
|
+
</tr>
|
635
|
+
</table>
|
636
|
+
</div>
|
637
|
+
|
638
|
+
<div class="method_details ">
|
639
|
+
<h3 class="signature " id="auto_discover_subscribers-instance_method">
|
640
|
+
|
641
|
+
#<strong>auto_discover_subscribers</strong>(directory = nil) ⇒ <tt>Integer</tt>
|
642
|
+
|
643
|
+
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
</h3><div class="docstring">
|
648
|
+
<div class="discussion">
|
649
|
+
|
650
|
+
<p>Auto-discover subscribers in the subscribers directory</p>
|
651
|
+
|
652
|
+
|
653
|
+
</div>
|
654
|
+
</div>
|
655
|
+
<div class="tags">
|
656
|
+
<p class="tag_title">Parameters:</p>
|
657
|
+
<ul class="param">
|
658
|
+
|
659
|
+
<li>
|
660
|
+
|
661
|
+
<span class='name'>directory</span>
|
662
|
+
|
663
|
+
|
664
|
+
<span class='type'>(<tt>String</tt>)</span>
|
665
|
+
|
666
|
+
|
667
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
668
|
+
|
669
|
+
|
670
|
+
—
|
671
|
+
<div class='inline'>
|
672
|
+
<p>Directory to search for subscribers</p>
|
673
|
+
</div>
|
674
|
+
|
675
|
+
</li>
|
676
|
+
|
677
|
+
</ul>
|
678
|
+
|
679
|
+
<p class="tag_title">Returns:</p>
|
680
|
+
<ul class="return">
|
681
|
+
|
682
|
+
<li>
|
683
|
+
|
684
|
+
|
685
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
686
|
+
|
687
|
+
|
688
|
+
|
689
|
+
—
|
690
|
+
<div class='inline'>
|
691
|
+
<p>Number of subscribers discovered</p>
|
692
|
+
</div>
|
693
|
+
|
694
|
+
</li>
|
695
|
+
|
696
|
+
</ul>
|
697
|
+
|
698
|
+
</div><table class="source_code">
|
699
|
+
<tr>
|
700
|
+
<td>
|
701
|
+
<pre class="lines">
|
702
|
+
|
703
|
+
|
704
|
+
155
|
705
|
+
156
|
706
|
+
157
|
707
|
+
158
|
708
|
+
159
|
709
|
+
160
|
710
|
+
161
|
711
|
+
162
|
712
|
+
163
|
713
|
+
164
|
714
|
+
165
|
715
|
+
166
|
716
|
+
167
|
717
|
+
168
|
718
|
+
169
|
719
|
+
170
|
720
|
+
171
|
721
|
+
172
|
722
|
+
173
|
723
|
+
174
|
724
|
+
175
|
725
|
+
176
|
726
|
+
177
|
727
|
+
178
|
728
|
+
179
|
729
|
+
180
|
730
|
+
181
|
731
|
+
182
|
732
|
+
183
|
733
|
+
184
|
734
|
+
185
|
735
|
+
186
|
736
|
+
187
|
737
|
+
188
|
738
|
+
189
|
739
|
+
190
|
740
|
+
191</pre>
|
741
|
+
</td>
|
742
|
+
<td>
|
743
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 155</span>
|
744
|
+
|
745
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_auto_discover_subscribers'>auto_discover_subscribers</span><span class='lparen'>(</span><span class='id identifier rubyid_directory'>directory</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
746
|
+
<span class='id identifier rubyid_directory'>directory</span> <span class='op'>||=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>..</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>events</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>subscribers</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
747
|
+
|
748
|
+
<span class='kw'>return</span> <span class='int'>0</span> <span class='kw'>unless</span> <span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_directory'>directory</span><span class='rparen'>)</span>
|
749
|
+
|
750
|
+
<span class='id identifier rubyid_discovered_count'>discovered_count</span> <span class='op'>=</span> <span class='int'>0</span>
|
751
|
+
|
752
|
+
<span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_glob'>glob</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_directory'>directory</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*_subscriber.rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_file'>file</span><span class='op'>|</span>
|
753
|
+
<span class='id identifier rubyid_require'>require</span> <span class='id identifier rubyid_file'>file</span>
|
754
|
+
|
755
|
+
<span class='comment'># Extract class name from filename
|
756
|
+
</span> <span class='id identifier rubyid_class_name'>class_name</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_basename'>basename</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_camelize'>camelize</span>
|
757
|
+
<span class='id identifier rubyid_full_class_name'>full_class_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Tasker::Events::Subscribers::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_class_name'>class_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
758
|
+
|
759
|
+
<span class='kw'>begin</span>
|
760
|
+
<span class='comment'># Try to instantiate the subscriber
|
761
|
+
</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span> <span class='op'>=</span> <span class='id identifier rubyid_full_class_name'>full_class_name</span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
762
|
+
|
763
|
+
<span class='comment'># Auto-discover events from class methods or constants
|
764
|
+
</span> <span class='id identifier rubyid_events'>events</span> <span class='op'>=</span> <span class='id identifier rubyid_discover_subscriber_events'>discover_subscriber_events</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='rparen'>)</span>
|
765
|
+
|
766
|
+
<span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='comma'>,</span> <span class='label'>events:</span> <span class='id identifier rubyid_events'>events</span><span class='comma'>,</span> <span class='label'>auto_discovered:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
767
|
+
<span class='id identifier rubyid_discovered_count'>discovered_count</span> <span class='op'>+=</span> <span class='int'>1</span>
|
768
|
+
|
769
|
+
<span class='id identifier rubyid_log_registry_operation'>log_registry_operation</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>auto_discovered_subscriber</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
770
|
+
<span class='label'>subscriber_name:</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span>
|
771
|
+
<span class='label'>events:</span> <span class='id identifier rubyid_events'>events</span><span class='comma'>,</span>
|
772
|
+
<span class='label'>file_path:</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
773
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
774
|
+
<span class='id identifier rubyid_log_registry_error'>log_registry_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>auto_discovery_failed</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='comma'>,</span>
|
775
|
+
<span class='label'>file_path:</span> <span class='id identifier rubyid_file'>file</span><span class='comma'>,</span>
|
776
|
+
<span class='label'>class_name:</span> <span class='id identifier rubyid_full_class_name'>full_class_name</span><span class='rparen'>)</span>
|
777
|
+
<span class='kw'>end</span>
|
778
|
+
<span class='kw'>end</span>
|
779
|
+
|
780
|
+
<span class='id identifier rubyid_discovered_count'>discovered_count</span>
|
781
|
+
<span class='kw'>end</span></pre>
|
782
|
+
</td>
|
783
|
+
</tr>
|
784
|
+
</table>
|
785
|
+
</div>
|
786
|
+
|
787
|
+
<div class="method_details ">
|
788
|
+
<h3 class="signature " id="clear!-instance_method">
|
789
|
+
|
790
|
+
#<strong>clear!</strong> ⇒ <tt>Boolean</tt>
|
791
|
+
|
792
|
+
|
793
|
+
|
794
|
+
|
795
|
+
|
796
|
+
</h3><div class="docstring">
|
797
|
+
<div class="discussion">
|
798
|
+
|
799
|
+
<p>Clear all registered subscribers (required by BaseRegistry)</p>
|
800
|
+
|
801
|
+
|
802
|
+
</div>
|
803
|
+
</div>
|
804
|
+
<div class="tags">
|
805
|
+
|
806
|
+
<p class="tag_title">Returns:</p>
|
807
|
+
<ul class="return">
|
808
|
+
|
809
|
+
<li>
|
810
|
+
|
811
|
+
|
812
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
813
|
+
|
814
|
+
|
815
|
+
|
816
|
+
—
|
817
|
+
<div class='inline'>
|
818
|
+
<p>True if cleared successfully</p>
|
819
|
+
</div>
|
820
|
+
|
821
|
+
</li>
|
822
|
+
|
823
|
+
</ul>
|
824
|
+
|
825
|
+
</div><table class="source_code">
|
826
|
+
<tr>
|
827
|
+
<td>
|
828
|
+
<pre class="lines">
|
829
|
+
|
830
|
+
|
831
|
+
210
|
832
|
+
211
|
833
|
+
212
|
834
|
+
213
|
835
|
+
214
|
836
|
+
215
|
837
|
+
216
|
838
|
+
217</pre>
|
839
|
+
</td>
|
840
|
+
<td>
|
841
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 210</span>
|
842
|
+
|
843
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_clear!'>clear!</span>
|
844
|
+
<span class='id identifier rubyid_thread_safe_operation'>thread_safe_operation</span> <span class='kw'>do</span>
|
845
|
+
<span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
|
846
|
+
<span class='ivar'>@event_mappings</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span>
|
847
|
+
<span class='id identifier rubyid_log_registry_operation'>log_registry_operation</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>cleared_all</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
848
|
+
<span class='kw'>true</span>
|
849
|
+
<span class='kw'>end</span>
|
850
|
+
<span class='kw'>end</span></pre>
|
851
|
+
</td>
|
852
|
+
</tr>
|
853
|
+
</table>
|
854
|
+
</div>
|
855
|
+
|
856
|
+
<div class="method_details ">
|
857
|
+
<h3 class="signature " id="has_subscribers?-instance_method">
|
858
|
+
|
859
|
+
#<strong>has_subscribers?</strong>(event_name) ⇒ <tt>Boolean</tt>
|
860
|
+
|
861
|
+
|
862
|
+
|
863
|
+
|
864
|
+
|
865
|
+
</h3><div class="docstring">
|
866
|
+
<div class="discussion">
|
867
|
+
|
868
|
+
<p>Check if an event has any subscribers</p>
|
869
|
+
|
870
|
+
|
871
|
+
</div>
|
872
|
+
</div>
|
873
|
+
<div class="tags">
|
874
|
+
<p class="tag_title">Parameters:</p>
|
875
|
+
<ul class="param">
|
876
|
+
|
877
|
+
<li>
|
878
|
+
|
879
|
+
<span class='name'>event_name</span>
|
880
|
+
|
881
|
+
|
882
|
+
<span class='type'>(<tt>String</tt>)</span>
|
883
|
+
|
884
|
+
|
885
|
+
|
886
|
+
—
|
887
|
+
<div class='inline'>
|
888
|
+
<p>Event name to check</p>
|
889
|
+
</div>
|
890
|
+
|
891
|
+
</li>
|
892
|
+
|
893
|
+
</ul>
|
894
|
+
|
895
|
+
<p class="tag_title">Returns:</p>
|
896
|
+
<ul class="return">
|
897
|
+
|
898
|
+
<li>
|
899
|
+
|
900
|
+
|
901
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
902
|
+
|
903
|
+
|
904
|
+
|
905
|
+
—
|
906
|
+
<div class='inline'>
|
907
|
+
<p>True if event has subscribers</p>
|
908
|
+
</div>
|
909
|
+
|
910
|
+
</li>
|
911
|
+
|
912
|
+
</ul>
|
913
|
+
|
914
|
+
</div><table class="source_code">
|
915
|
+
<tr>
|
916
|
+
<td>
|
917
|
+
<pre class="lines">
|
918
|
+
|
919
|
+
|
920
|
+
147
|
921
|
+
148
|
922
|
+
149</pre>
|
923
|
+
</td>
|
924
|
+
<td>
|
925
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 147</span>
|
926
|
+
|
927
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_has_subscribers?'>has_subscribers?</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
|
928
|
+
<span class='ivar'>@event_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> <span class='op'>&&</span> <span class='op'>!</span><span class='ivar'>@event_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><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
929
|
+
<span class='kw'>end</span></pre>
|
930
|
+
</td>
|
931
|
+
</tr>
|
932
|
+
</table>
|
933
|
+
</div>
|
934
|
+
|
935
|
+
<div class="method_details ">
|
936
|
+
<h3 class="signature " id="register-instance_method">
|
937
|
+
|
938
|
+
#<strong>register</strong>(subscriber_class, events: [], replace: false, **options) ⇒ <tt>Boolean</tt>
|
939
|
+
|
940
|
+
|
941
|
+
|
942
|
+
|
943
|
+
|
944
|
+
</h3><div class="docstring">
|
945
|
+
<div class="discussion">
|
946
|
+
|
947
|
+
<p>Register an event subscriber</p>
|
948
|
+
|
949
|
+
|
950
|
+
</div>
|
951
|
+
</div>
|
952
|
+
<div class="tags">
|
953
|
+
<p class="tag_title">Parameters:</p>
|
954
|
+
<ul class="param">
|
955
|
+
|
956
|
+
<li>
|
957
|
+
|
958
|
+
<span class='name'>subscriber_class</span>
|
959
|
+
|
960
|
+
|
961
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
962
|
+
|
963
|
+
|
964
|
+
|
965
|
+
—
|
966
|
+
<div class='inline'>
|
967
|
+
<p>The subscriber class to register</p>
|
968
|
+
</div>
|
969
|
+
|
970
|
+
</li>
|
971
|
+
|
972
|
+
<li>
|
973
|
+
|
974
|
+
<span class='name'>events</span>
|
975
|
+
|
976
|
+
|
977
|
+
<span class='type'>(<tt>Array<String></tt>)</span>
|
978
|
+
|
979
|
+
|
980
|
+
<em class="default">(defaults to: <tt>[]</tt>)</em>
|
981
|
+
|
982
|
+
|
983
|
+
—
|
984
|
+
<div class='inline'>
|
985
|
+
<p>Events this subscriber handles</p>
|
986
|
+
</div>
|
987
|
+
|
988
|
+
</li>
|
989
|
+
|
990
|
+
<li>
|
991
|
+
|
992
|
+
<span class='name'>replace</span>
|
993
|
+
|
994
|
+
|
995
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
996
|
+
|
997
|
+
|
998
|
+
<em class="default">(defaults to: <tt>false</tt>)</em>
|
999
|
+
|
1000
|
+
|
1001
|
+
—
|
1002
|
+
<div class='inline'>
|
1003
|
+
<p>Whether to replace existing subscriber</p>
|
1004
|
+
</div>
|
1005
|
+
|
1006
|
+
</li>
|
1007
|
+
|
1008
|
+
<li>
|
1009
|
+
|
1010
|
+
<span class='name'>options</span>
|
1011
|
+
|
1012
|
+
|
1013
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1014
|
+
|
1015
|
+
|
1016
|
+
|
1017
|
+
—
|
1018
|
+
<div class='inline'>
|
1019
|
+
<p>Additional registration options</p>
|
1020
|
+
</div>
|
1021
|
+
|
1022
|
+
</li>
|
1023
|
+
|
1024
|
+
</ul>
|
1025
|
+
|
1026
|
+
<p class="tag_title">Returns:</p>
|
1027
|
+
<ul class="return">
|
1028
|
+
|
1029
|
+
<li>
|
1030
|
+
|
1031
|
+
|
1032
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1033
|
+
|
1034
|
+
|
1035
|
+
|
1036
|
+
—
|
1037
|
+
<div class='inline'>
|
1038
|
+
<p>True if registration successful</p>
|
1039
|
+
</div>
|
1040
|
+
|
1041
|
+
</li>
|
1042
|
+
|
1043
|
+
</ul>
|
1044
|
+
<p class="tag_title">Raises:</p>
|
1045
|
+
<ul class="raise">
|
1046
|
+
|
1047
|
+
<li>
|
1048
|
+
|
1049
|
+
|
1050
|
+
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
1051
|
+
|
1052
|
+
|
1053
|
+
|
1054
|
+
—
|
1055
|
+
<div class='inline'>
|
1056
|
+
<p>If subscriber already exists and replace is false</p>
|
1057
|
+
</div>
|
1058
|
+
|
1059
|
+
</li>
|
1060
|
+
|
1061
|
+
</ul>
|
1062
|
+
|
1063
|
+
</div><table class="source_code">
|
1064
|
+
<tr>
|
1065
|
+
<td>
|
1066
|
+
<pre class="lines">
|
1067
|
+
|
1068
|
+
|
1069
|
+
43
|
1070
|
+
44
|
1071
|
+
45
|
1072
|
+
46
|
1073
|
+
47
|
1074
|
+
48
|
1075
|
+
49
|
1076
|
+
50
|
1077
|
+
51
|
1078
|
+
52
|
1079
|
+
53
|
1080
|
+
54
|
1081
|
+
55
|
1082
|
+
56
|
1083
|
+
57
|
1084
|
+
58
|
1085
|
+
59
|
1086
|
+
60
|
1087
|
+
61
|
1088
|
+
62
|
1089
|
+
63
|
1090
|
+
64
|
1091
|
+
65
|
1092
|
+
66
|
1093
|
+
67
|
1094
|
+
68
|
1095
|
+
69
|
1096
|
+
70
|
1097
|
+
71
|
1098
|
+
72
|
1099
|
+
73
|
1100
|
+
74
|
1101
|
+
75
|
1102
|
+
76
|
1103
|
+
77
|
1104
|
+
78
|
1105
|
+
79
|
1106
|
+
80
|
1107
|
+
81
|
1108
|
+
82
|
1109
|
+
83
|
1110
|
+
84
|
1111
|
+
85</pre>
|
1112
|
+
</td>
|
1113
|
+
<td>
|
1114
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 43</span>
|
1115
|
+
|
1116
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='comma'>,</span> <span class='label'>events:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>replace:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
|
1117
|
+
<span class='id identifier rubyid_subscriber_name'>subscriber_name</span> <span class='op'>=</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_demodulize'>demodulize</span><span class='period'>.</span><span class='id identifier rubyid_underscore'>underscore</span>
|
1118
|
+
|
1119
|
+
<span class='id identifier rubyid_thread_safe_operation'>thread_safe_operation</span> <span class='kw'>do</span>
|
1120
|
+
<span class='comment'># Validate subscriber interface
|
1121
|
+
</span> <span class='kw'>begin</span>
|
1122
|
+
<span class='const'><span class='object_link'><a href="../Registry.html" title="Tasker::Registry (module)">Registry</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="InterfaceValidator.html" title="Tasker::Registry::InterfaceValidator (class)">InterfaceValidator</a></span></span><span class='period'>.</span><span class='id identifier rubyid_validate_subscriber!'><span class='object_link'><a href="InterfaceValidator.html#validate_subscriber!-class_method" title="Tasker::Registry::InterfaceValidator.validate_subscriber! (method)">validate_subscriber!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='rparen'>)</span>
|
1123
|
+
<span class='kw'>rescue</span> <span class='const'>ArgumentError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
1124
|
+
<span class='id identifier rubyid_log_validation_failure'>log_validation_failure</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>event_subscriber</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
|
1125
|
+
<span class='id identifier rubyid_raise'>raise</span>
|
1126
|
+
<span class='kw'>end</span>
|
1127
|
+
|
1128
|
+
<span class='comment'># Check for existing subscriber
|
1129
|
+
</span> <span class='kw'>if</span> <span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_replace'>replace</span>
|
1130
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Subscriber '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>' already registered. Use replace: true to override.</span><span class='tstring_end'>"</span></span>
|
1131
|
+
<span class='kw'>end</span>
|
1132
|
+
|
1133
|
+
<span class='comment'># Remove existing subscriber if replacing
|
1134
|
+
</span> <span class='kw'>if</span> <span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='rparen'>)</span>
|
1135
|
+
<span class='id identifier rubyid_existing_config'>existing_config</span> <span class='op'>=</span> <span class='ivar'>@subscribers</span><span class='lbracket'>[</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='rbracket'>]</span>
|
1136
|
+
<span class='id identifier rubyid_unregister_event_mappings'>unregister_event_mappings</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_existing_config'>existing_config</span><span class='lbracket'>[</span><span class='symbol'>:events</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
1137
|
+
<span class='id identifier rubyid_log_unregistration'>log_unregistration</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>event_subscriber</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_existing_config'>existing_config</span><span class='lbracket'>[</span><span class='symbol'>:subscriber_class</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
1138
|
+
<span class='kw'>end</span>
|
1139
|
+
|
1140
|
+
<span class='comment'># Register subscriber
|
1141
|
+
</span> <span class='id identifier rubyid_subscriber_config'>subscriber_config</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
1142
|
+
<span class='label'>subscriber_class:</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='comma'>,</span>
|
1143
|
+
<span class='label'>events:</span> <span class='id identifier rubyid_events'>events</span><span class='comma'>,</span>
|
1144
|
+
<span class='label'>registered_at:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span>
|
1145
|
+
<span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='label'>replace:</span> <span class='id identifier rubyid_replace'>replace</span><span class='rparen'>)</span>
|
1146
|
+
<span class='rbrace'>}</span>
|
1147
|
+
|
1148
|
+
<span class='ivar'>@subscribers</span><span class='lbracket'>[</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_subscriber_config'>subscriber_config</span>
|
1149
|
+
|
1150
|
+
<span class='comment'># Index by events
|
1151
|
+
</span> <span class='id identifier rubyid_register_event_mappings'>register_event_mappings</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_events'>events</span><span class='rparen'>)</span>
|
1152
|
+
|
1153
|
+
<span class='id identifier rubyid_log_registration'>log_registration</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>event_subscriber</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='comma'>,</span>
|
1154
|
+
<span class='lbrace'>{</span> <span class='label'>events:</span> <span class='id identifier rubyid_events'>events</span><span class='comma'>,</span> <span class='label'>event_count:</span> <span class='id identifier rubyid_events'>events</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_options'>options</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
|
1155
|
+
|
1156
|
+
<span class='kw'>true</span>
|
1157
|
+
<span class='kw'>end</span>
|
1158
|
+
<span class='kw'>end</span></pre>
|
1159
|
+
</td>
|
1160
|
+
</tr>
|
1161
|
+
</table>
|
1162
|
+
</div>
|
1163
|
+
|
1164
|
+
<div class="method_details ">
|
1165
|
+
<h3 class="signature " id="stats-instance_method">
|
1166
|
+
|
1167
|
+
#<strong>stats</strong> ⇒ <tt>Hash</tt>
|
1168
|
+
|
1169
|
+
|
1170
|
+
|
1171
|
+
|
1172
|
+
|
1173
|
+
</h3><div class="docstring">
|
1174
|
+
<div class="discussion">
|
1175
|
+
|
1176
|
+
<p>Get comprehensive registry statistics</p>
|
1177
|
+
|
1178
|
+
|
1179
|
+
</div>
|
1180
|
+
</div>
|
1181
|
+
<div class="tags">
|
1182
|
+
|
1183
|
+
<p class="tag_title">Returns:</p>
|
1184
|
+
<ul class="return">
|
1185
|
+
|
1186
|
+
<li>
|
1187
|
+
|
1188
|
+
|
1189
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1190
|
+
|
1191
|
+
|
1192
|
+
|
1193
|
+
—
|
1194
|
+
<div class='inline'>
|
1195
|
+
<p>Detailed statistics about the registry</p>
|
1196
|
+
</div>
|
1197
|
+
|
1198
|
+
</li>
|
1199
|
+
|
1200
|
+
</ul>
|
1201
|
+
|
1202
|
+
</div><table class="source_code">
|
1203
|
+
<tr>
|
1204
|
+
<td>
|
1205
|
+
<pre class="lines">
|
1206
|
+
|
1207
|
+
|
1208
|
+
196
|
1209
|
+
197
|
1210
|
+
198
|
1211
|
+
199
|
1212
|
+
200
|
1213
|
+
201
|
1214
|
+
202
|
1215
|
+
203
|
1216
|
+
204
|
1217
|
+
205</pre>
|
1218
|
+
</td>
|
1219
|
+
<td>
|
1220
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 196</span>
|
1221
|
+
|
1222
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_stats'>stats</span>
|
1223
|
+
<span class='id identifier rubyid_base_stats'>base_stats</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
|
1224
|
+
<span class='label'>total_subscribers:</span> <span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
|
1225
|
+
<span class='label'>total_events:</span> <span class='ivar'>@event_mappings</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
|
1226
|
+
<span class='label'>events_covered:</span> <span class='ivar'>@event_mappings</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_sort'>sort</span><span class='comma'>,</span>
|
1227
|
+
<span class='label'>subscribers_by_event:</span> <span class='ivar'>@event_mappings</span><span class='period'>.</span><span class='id identifier rubyid_transform_values'>transform_values</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:size</span><span class='rparen'>)</span><span class='comma'>,</span>
|
1228
|
+
<span class='label'>average_events_per_subscriber:</span> <span class='id identifier rubyid_calculate_average_events_per_subscriber'>calculate_average_events_per_subscriber</span><span class='comma'>,</span>
|
1229
|
+
<span class='label'>most_popular_events:</span> <span class='id identifier rubyid_find_most_popular_events'>find_most_popular_events</span>
|
1230
|
+
<span class='rparen'>)</span>
|
1231
|
+
<span class='kw'>end</span></pre>
|
1232
|
+
</td>
|
1233
|
+
</tr>
|
1234
|
+
</table>
|
1235
|
+
</div>
|
1236
|
+
|
1237
|
+
<div class="method_details ">
|
1238
|
+
<h3 class="signature " id="subscribers_for_event-instance_method">
|
1239
|
+
|
1240
|
+
#<strong>subscribers_for_event</strong>(event_name) ⇒ <tt>Array<Hash></tt>
|
1241
|
+
|
1242
|
+
|
1243
|
+
|
1244
|
+
|
1245
|
+
|
1246
|
+
</h3><div class="docstring">
|
1247
|
+
<div class="discussion">
|
1248
|
+
|
1249
|
+
<p>Get subscribers for a specific event</p>
|
1250
|
+
|
1251
|
+
|
1252
|
+
</div>
|
1253
|
+
</div>
|
1254
|
+
<div class="tags">
|
1255
|
+
<p class="tag_title">Parameters:</p>
|
1256
|
+
<ul class="param">
|
1257
|
+
|
1258
|
+
<li>
|
1259
|
+
|
1260
|
+
<span class='name'>event_name</span>
|
1261
|
+
|
1262
|
+
|
1263
|
+
<span class='type'>(<tt>String</tt>)</span>
|
1264
|
+
|
1265
|
+
|
1266
|
+
|
1267
|
+
—
|
1268
|
+
<div class='inline'>
|
1269
|
+
<p>The event name to find subscribers for</p>
|
1270
|
+
</div>
|
1271
|
+
|
1272
|
+
</li>
|
1273
|
+
|
1274
|
+
</ul>
|
1275
|
+
|
1276
|
+
<p class="tag_title">Returns:</p>
|
1277
|
+
<ul class="return">
|
1278
|
+
|
1279
|
+
<li>
|
1280
|
+
|
1281
|
+
|
1282
|
+
<span class='type'>(<tt>Array<Hash></tt>)</span>
|
1283
|
+
|
1284
|
+
|
1285
|
+
|
1286
|
+
—
|
1287
|
+
<div class='inline'>
|
1288
|
+
<p>Array of subscriber configurations</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
|
+
117
|
1302
|
+
118
|
1303
|
+
119
|
1304
|
+
120</pre>
|
1305
|
+
</td>
|
1306
|
+
<td>
|
1307
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 117</span>
|
1308
|
+
|
1309
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_subscribers_for_event'>subscribers_for_event</span><span class='lparen'>(</span><span class='id identifier rubyid_event_name'>event_name</span><span class='rparen'>)</span>
|
1310
|
+
<span class='id identifier rubyid_subscriber_names'>subscriber_names</span> <span class='op'>=</span> <span class='ivar'>@event_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> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
1311
|
+
<span class='id identifier rubyid_subscriber_names'>subscriber_names</span><span class='period'>.</span><span class='id identifier rubyid_filter_map'>filter_map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='op'>|</span> <span class='ivar'>@subscribers</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
|
1312
|
+
<span class='kw'>end</span></pre>
|
1313
|
+
</td>
|
1314
|
+
</tr>
|
1315
|
+
</table>
|
1316
|
+
</div>
|
1317
|
+
|
1318
|
+
<div class="method_details ">
|
1319
|
+
<h3 class="signature " id="supported_events-instance_method">
|
1320
|
+
|
1321
|
+
#<strong>supported_events</strong> ⇒ <tt>Array<String></tt>
|
1322
|
+
|
1323
|
+
|
1324
|
+
|
1325
|
+
|
1326
|
+
|
1327
|
+
</h3><div class="docstring">
|
1328
|
+
<div class="discussion">
|
1329
|
+
|
1330
|
+
<p>Get supported events across all subscribers</p>
|
1331
|
+
|
1332
|
+
|
1333
|
+
</div>
|
1334
|
+
</div>
|
1335
|
+
<div class="tags">
|
1336
|
+
|
1337
|
+
<p class="tag_title">Returns:</p>
|
1338
|
+
<ul class="return">
|
1339
|
+
|
1340
|
+
<li>
|
1341
|
+
|
1342
|
+
|
1343
|
+
<span class='type'>(<tt>Array<String></tt>)</span>
|
1344
|
+
|
1345
|
+
|
1346
|
+
|
1347
|
+
—
|
1348
|
+
<div class='inline'>
|
1349
|
+
<p>Array of supported event names</p>
|
1350
|
+
</div>
|
1351
|
+
|
1352
|
+
</li>
|
1353
|
+
|
1354
|
+
</ul>
|
1355
|
+
|
1356
|
+
</div><table class="source_code">
|
1357
|
+
<tr>
|
1358
|
+
<td>
|
1359
|
+
<pre class="lines">
|
1360
|
+
|
1361
|
+
|
1362
|
+
139
|
1363
|
+
140
|
1364
|
+
141</pre>
|
1365
|
+
</td>
|
1366
|
+
<td>
|
1367
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 139</span>
|
1368
|
+
|
1369
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_supported_events'>supported_events</span>
|
1370
|
+
<span class='ivar'>@event_mappings</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_sort'>sort</span>
|
1371
|
+
<span class='kw'>end</span></pre>
|
1372
|
+
</td>
|
1373
|
+
</tr>
|
1374
|
+
</table>
|
1375
|
+
</div>
|
1376
|
+
|
1377
|
+
<div class="method_details ">
|
1378
|
+
<h3 class="signature " id="unregister-instance_method">
|
1379
|
+
|
1380
|
+
#<strong>unregister</strong>(subscriber_class) ⇒ <tt>Boolean</tt>
|
1381
|
+
|
1382
|
+
|
1383
|
+
|
1384
|
+
|
1385
|
+
|
1386
|
+
</h3><div class="docstring">
|
1387
|
+
<div class="discussion">
|
1388
|
+
|
1389
|
+
<p>Unregister an event subscriber</p>
|
1390
|
+
|
1391
|
+
|
1392
|
+
</div>
|
1393
|
+
</div>
|
1394
|
+
<div class="tags">
|
1395
|
+
<p class="tag_title">Parameters:</p>
|
1396
|
+
<ul class="param">
|
1397
|
+
|
1398
|
+
<li>
|
1399
|
+
|
1400
|
+
<span class='name'>subscriber_class</span>
|
1401
|
+
|
1402
|
+
|
1403
|
+
<span class='type'>(<tt>Class</tt>, <tt>String</tt>)</span>
|
1404
|
+
|
1405
|
+
|
1406
|
+
|
1407
|
+
—
|
1408
|
+
<div class='inline'>
|
1409
|
+
<p>The subscriber class or name to unregister</p>
|
1410
|
+
</div>
|
1411
|
+
|
1412
|
+
</li>
|
1413
|
+
|
1414
|
+
</ul>
|
1415
|
+
|
1416
|
+
<p class="tag_title">Returns:</p>
|
1417
|
+
<ul class="return">
|
1418
|
+
|
1419
|
+
<li>
|
1420
|
+
|
1421
|
+
|
1422
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1423
|
+
|
1424
|
+
|
1425
|
+
|
1426
|
+
—
|
1427
|
+
<div class='inline'>
|
1428
|
+
<p>True if unregistered successfully</p>
|
1429
|
+
</div>
|
1430
|
+
|
1431
|
+
</li>
|
1432
|
+
|
1433
|
+
</ul>
|
1434
|
+
|
1435
|
+
</div><table class="source_code">
|
1436
|
+
<tr>
|
1437
|
+
<td>
|
1438
|
+
<pre class="lines">
|
1439
|
+
|
1440
|
+
|
1441
|
+
91
|
1442
|
+
92
|
1443
|
+
93
|
1444
|
+
94
|
1445
|
+
95
|
1446
|
+
96
|
1447
|
+
97
|
1448
|
+
98
|
1449
|
+
99
|
1450
|
+
100
|
1451
|
+
101
|
1452
|
+
102
|
1453
|
+
103
|
1454
|
+
104
|
1455
|
+
105
|
1456
|
+
106
|
1457
|
+
107
|
1458
|
+
108
|
1459
|
+
109
|
1460
|
+
110
|
1461
|
+
111</pre>
|
1462
|
+
</td>
|
1463
|
+
<td>
|
1464
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/registry/subscriber_registry.rb', line 91</span>
|
1465
|
+
|
1466
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_unregister'>unregister</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='rparen'>)</span>
|
1467
|
+
<span class='id identifier rubyid_subscriber_name'>subscriber_name</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Class</span><span class='rparen'>)</span>
|
1468
|
+
<span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_demodulize'>demodulize</span><span class='period'>.</span><span class='id identifier rubyid_underscore'>underscore</span>
|
1469
|
+
<span class='kw'>else</span>
|
1470
|
+
<span class='id identifier rubyid_subscriber_class'>subscriber_class</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
1471
|
+
<span class='kw'>end</span>
|
1472
|
+
|
1473
|
+
<span class='id identifier rubyid_thread_safe_operation'>thread_safe_operation</span> <span class='kw'>do</span>
|
1474
|
+
<span class='id identifier rubyid_subscriber_config'>subscriber_config</span> <span class='op'>=</span> <span class='ivar'>@subscribers</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='rparen'>)</span>
|
1475
|
+
|
1476
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_subscriber_config'>subscriber_config</span>
|
1477
|
+
<span class='comment'># Remove from event mappings
|
1478
|
+
</span> <span class='id identifier rubyid_unregister_event_mappings'>unregister_event_mappings</span><span class='lparen'>(</span><span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_config'>subscriber_config</span><span class='lbracket'>[</span><span class='symbol'>:events</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
1479
|
+
|
1480
|
+
<span class='id identifier rubyid_log_unregistration'>log_unregistration</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>event_subscriber</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_name'>subscriber_name</span><span class='comma'>,</span> <span class='id identifier rubyid_subscriber_config'>subscriber_config</span><span class='lbracket'>[</span><span class='symbol'>:subscriber_class</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
1481
|
+
<span class='kw'>true</span>
|
1482
|
+
<span class='kw'>else</span>
|
1483
|
+
<span class='kw'>false</span>
|
1484
|
+
<span class='kw'>end</span>
|
1485
|
+
<span class='kw'>end</span>
|
1486
|
+
<span class='kw'>end</span></pre>
|
1487
|
+
</td>
|
1488
|
+
</tr>
|
1489
|
+
</table>
|
1490
|
+
</div>
|
1491
|
+
|
1492
|
+
</div>
|
1493
|
+
|
1494
|
+
</div>
|
1495
|
+
|
1496
|
+
<div id="footer">
|
1497
|
+
Generated on Tue Jul 1 16:47:39 2025 by
|
1498
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1499
|
+
0.9.37 (ruby-3.2.4).
|
1500
|
+
</div>
|
1501
|
+
|
1502
|
+
</div>
|
1503
|
+
</body>
|
1504
|
+
</html>
|