Class: Chef::EventDispatch::Dispatcher
- Defined in:
- lib/chef/event_dispatch/dispatcher.rb
Overview
EventDispatch::Dispatcher
The Dispatcher handles receiving event data from the sources (Chef::Client, Resources and Providers, etc.) and publishing the data to the registered subscribers.
Instance Attribute Summary collapse
-
#subscribers ⇒ Object
readonly
Returns the value of attribute subscribers.
Instance Method Summary collapse
-
#call_subscribers(method_name, *args) ⇒ Object
All messages are unconditionally forwarded to all subscribers, so just define the forwarding in one go:.
-
#deprecation(message, location = caller(2..2)[0]) ⇒ Object
Special case deprecation, since it needs to know its caller.
-
#formatter? ⇒ Boolean
Check to see if we are dispatching to a formatter.
-
#initialize(*subscribers) ⇒ Dispatcher
constructor
A new instance of Dispatcher.
-
#register(subscriber) ⇒ Object
Add a new subscriber to the list of registered subscribers.
Methods inherited from Base
#attribute_file_load_failed, #attribute_file_loaded, #attribute_load_complete, #attribute_load_start, #audit_phase_complete, #audit_phase_failed, #audit_phase_start, #control_example_failure, #control_example_success, #control_group_started, #converge_complete, #converge_failed, #converge_start, #cookbook_clean_complete, #cookbook_clean_start, #cookbook_gem_failed, #cookbook_gem_finished, #cookbook_gem_installing, #cookbook_gem_start, #cookbook_gem_using, #cookbook_resolution_complete, #cookbook_resolution_failed, #cookbook_resolution_start, #cookbook_sync_complete, #cookbook_sync_failed, #cookbook_sync_start, #definition_file_load_failed, #definition_file_loaded, #definition_load_complete, #definition_load_start, #handler_executed, #handlers_completed, #handlers_start, #library_file_load_failed, #library_file_loaded, #library_load_complete, #library_load_start, #lwrp_file_load_failed, #lwrp_file_loaded, #lwrp_load_complete, #lwrp_load_start, #msg, #node_load_completed, #node_load_failed, #node_load_start, #ohai_completed, #policyfile_loaded, #provider_requirement_failed, #recipe_file_load_failed, #recipe_file_loaded, #recipe_load_complete, #recipe_load_start, #recipe_not_found, #registration_completed, #registration_failed, #registration_start, #removed_cookbook_file, #resource_action_start, #resource_bypassed, #resource_completed, #resource_current_state_load_bypassed, #resource_current_state_loaded, #resource_failed, #resource_failed_retriable, #resource_skipped, #resource_up_to_date, #resource_update_applied, #resource_update_progress, #resource_updated, #run_completed, #run_failed, #run_list_expand_failed, #run_list_expanded, #run_start, #run_started, #skipping_registration, #stream_closed, #stream_opened, #stream_output, #synchronized_cookbook, #updated_cookbook_file, #whyrun_assumption
Constructor Details
#initialize(*subscribers) ⇒ Dispatcher
Returns a new instance of Dispatcher.
14 15 16 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 14 def initialize(*subscribers) @subscribers = subscribers end |
Instance Attribute Details
#subscribers ⇒ Object (readonly)
Returns the value of attribute subscribers.
12 13 14 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 12 def subscribers @subscribers end |
Instance Method Details
#call_subscribers(method_name, *args) ⇒ Object
All messages are unconditionally forwarded to all subscribers, so just define the forwarding in one go:
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 33 def call_subscribers(method_name, *args) @subscribers.each do |s| # Skip new/unsupported event names. next if !s.respond_to?(method_name) mth = s.method(method_name) # Trim arguments to match what the subscriber expects to allow # adding new arguments without breaking compat. if mth.arity < args.size && mth.arity >= 0 mth.call(*args.take(mth.arity)) else mth.call(*args) end end end |
#deprecation(message, location = caller(2..2)[0]) ⇒ Object
Special case deprecation, since it needs to know its caller
57 58 59 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 57 def deprecation(, location = caller(2..2)[0]) call_subscribers(:deprecation, , location) end |
#formatter? ⇒ Boolean
Check to see if we are dispatching to a formatter
24 25 26 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 24 def formatter? @subscribers.any? { |s| s.respond_to?(:is_formatter?) && s.is_formatter? } end |
#register(subscriber) ⇒ Object
Add a new subscriber to the list of registered subscribers
19 20 21 |
# File 'lib/chef/event_dispatch/dispatcher.rb', line 19 def register(subscriber) @subscribers << subscriber end |