Class: RSMP::Node
- Inherits:
-
Object
- Object
- RSMP::Node
- Defined in:
- lib/rsmp/node/node.rb
Overview
Base class for sites and supervisors.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#archive ⇒ Object
readonly
Returns the value of attribute archive.
-
#clock ⇒ Object
readonly
Returns the value of attribute clock.
-
#collector ⇒ Object
readonly
Returns the value of attribute collector.
-
#deferred ⇒ Object
readonly
Returns the value of attribute deferred.
-
#error_queue ⇒ Object
readonly
Returns the value of attribute error_queue.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#task ⇒ Object
readonly
Returns the value of attribute task.
Instance Method Summary collapse
- #author ⇒ Object
- #check_required_settings(settings, required) ⇒ Object
- #clear_deferred ⇒ Object
- #defer(key, item = nil) ⇒ Object
- #distribute_error(error, options = {}) ⇒ Object
- #do_deferred(key, item = nil) ⇒ Object
- #ignore_errors(classes) ⇒ Object
-
#initialize(options = {}) ⇒ Node
constructor
A new instance of Node.
- #inspect ⇒ Object
- #now ⇒ Object
- #process_deferred ⇒ Object
-
#stop_subtasks ⇒ Object
stop proxies, then call super.
Methods included from Task
#initialize_task, #restart, #run, #start, #stop, #stop_task, #task_status, #wait, #wait_for_condition
Methods included from Logging
Constructor Details
Instance Attribute Details
#archive ⇒ Object (readonly)
Returns the value of attribute archive.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def archive @archive end |
#clock ⇒ Object (readonly)
Returns the value of attribute clock.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def clock @clock end |
#collector ⇒ Object (readonly)
Returns the value of attribute collector.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def collector @collector end |
#deferred ⇒ Object (readonly)
Returns the value of attribute deferred.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def deferred @deferred end |
#error_queue ⇒ Object (readonly)
Returns the value of attribute error_queue.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def error_queue @error_queue end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def logger @logger end |
#task ⇒ Object (readonly)
Returns the value of attribute task.
7 8 9 |
# File 'lib/rsmp/node/node.rb', line 7 def task @task end |
Instance Method Details
#author ⇒ Object
78 79 80 |
# File 'lib/rsmp/node/node.rb', line 78 def site_id end |
#check_required_settings(settings, required) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/rsmp/node/node.rb', line 70 def check_required_settings(settings, required) raise ArgumentError, 'Settings is empty' unless settings required.each do |setting| raise ArgumentError, "Missing setting: #{setting}" unless settings.include? setting.to_s end end |
#clear_deferred ⇒ Object
66 67 68 |
# File 'lib/rsmp/node/node.rb', line 66 def clear_deferred @deferred.clear end |
#defer(key, item = nil) ⇒ Object
52 53 54 |
# File 'lib/rsmp/node/node.rb', line 52 def defer(key, item = nil) @deferred << [key, item] end |
#distribute_error(error, options = {}) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/rsmp/node/node.rb', line 42 def distribute_error(error, = {}) return if @ignore_errors.find { |klass| error.is_a? klass } if [:level] == :internal log ["#{error} in task: #{Async::Task.current}", error.backtrace].flatten.join("\n"), level: :error end @error_queue.enqueue error end |
#do_deferred(key, item = nil) ⇒ Object
64 |
# File 'lib/rsmp/node/node.rb', line 64 def do_deferred(key, item = nil); end |
#ignore_errors(classes) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/rsmp/node/node.rb', line 34 def ignore_errors(classes) was = @ignore_errors @ignore_errors = [classes].flatten yield ensure @ignore_errors = was end |
#inspect ⇒ Object
19 20 21 |
# File 'lib/rsmp/node/node.rb', line 19 def inspect "#<#{self.class.name}:#{object_id} id: #{site_id}}>" end |
#now ⇒ Object
23 24 25 |
# File 'lib/rsmp/node/node.rb', line 23 def now clock.now end |
#process_deferred ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/rsmp/node/node.rb', line 56 def process_deferred cloned = @deferred.clone # clone in case do_deferred restarts the current task @deferred.clear cloned.each do |pair| do_deferred pair.first, pair.last end end |
#stop_subtasks ⇒ Object
stop proxies, then call super
28 29 30 31 32 |
# File 'lib/rsmp/node/node.rb', line 28 def stop_subtasks @proxies.each(&:stop) @proxies.clear super end |