Class: Eye::Trigger
Defined Under Namespace
Classes: Custom, Flapping, State, StopChilds
Constant Summary
collapse
- TYPES =
ex: { :type => :flapping, :times => 2, :within => 30.seconds}
{:flapping => "Flapping", :state => "State", :stop_childs => "StopChilds"}
Instance Attribute Summary collapse
#defaults, #should_bes, #validates, #variants
Class Method Summary
collapse
Instance Method Summary
collapse
inherited, param, validate
Constructor Details
#initialize(process, options = {}) ⇒ Trigger
Returns a new instance of Trigger.
42
43
44
45
46
47
48
|
# File 'lib/eye/trigger.rb', line 42
def initialize(process, options = {})
@options = options
@process = process
@full_name = @process.full_name if @process
debug "add #{options}"
end
|
Instance Attribute Details
#message ⇒ Object
Returns the value of attribute message.
10
11
12
|
# File 'lib/eye/trigger.rb', line 10
def message
@message
end
|
#options ⇒ Object
Returns the value of attribute options.
10
11
12
|
# File 'lib/eye/trigger.rb', line 10
def options
@options
end
|
#process ⇒ Object
Returns the value of attribute process.
10
11
12
|
# File 'lib/eye/trigger.rb', line 10
def process
@process
end
|
Class Method Details
.create(process, options = {}) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/eye/trigger.rb', line 30
def self.create(process, options = {})
get_class(options[:type]).new(process, options)
rescue Exception, Timeout::Error => ex
log_ex(ex)
nil
end
|
.get_class(type) ⇒ Object
24
25
26
27
28
|
# File 'lib/eye/trigger.rb', line 24
def self.get_class(type)
klass = eval("Eye::Trigger::#{TYPES[type]}") rescue nil
raise "Unknown trigger #{type}" unless klass
klass
end
|
.name_and_class(type) ⇒ Object
14
15
16
17
18
19
20
21
22
|
# File 'lib/eye/trigger.rb', line 14
def self.name_and_class(type)
type = type.to_sym
return {:name => type, :type => type} if TYPES[type]
if type =~ /\A(.*?)_?[0-9]+\z/
ctype = $1.to_sym
return {:name => type, :type => ctype} if TYPES[ctype]
end
end
|
.register(base) ⇒ Object
96
97
98
99
100
101
|
# File 'lib/eye/trigger.rb', line 96
def self.register(base)
name = base.to_s.gsub("Eye::Trigger::", '')
type = name.underscore.to_sym
Eye::Trigger::TYPES[type] = name
Eye::Trigger.const_set(name, base)
end
|
.validate!(options = {}) ⇒ Object
38
39
40
|
# File 'lib/eye/trigger.rb', line 38
def self.validate!(options = {})
get_class(options[:type]).validate(options)
end
|
Instance Method Details
#check(transition) ⇒ Object
84
85
86
|
# File 'lib/eye/trigger.rb', line 84
def check(transition)
raise "realize me"
end
|
#defer(&block) ⇒ Object
92
93
94
|
# File 'lib/eye/trigger.rb', line 92
def defer(&block)
Celluloid::Future.new(&block).value
end
|
#filter_transition(trans) ⇒ Object
76
77
78
79
80
81
82
|
# File 'lib/eye/trigger.rb', line 76
def filter_transition(trans)
return true unless to || from || event
compare_state(trans.to_name, to) &&
compare_state(trans.from_name, from) &&
compare_state(trans.event, event)
end
|
#inspect ⇒ Object
50
51
52
|
# File 'lib/eye/trigger.rb', line 50
def inspect
"<#{self.class} @process='#{@full_name}' @options=#{@options}>"
end
|
#logger_sub_tag ⇒ Object
58
59
60
|
# File 'lib/eye/trigger.rb', line 58
def logger_sub_tag
"trigger(#{@options[:type]})"
end
|
#logger_tag ⇒ Object
54
55
56
|
# File 'lib/eye/trigger.rb', line 54
def logger_tag
@process.logger.prefix
end
|
#notify(transition) ⇒ Object
62
63
64
65
66
67
68
69
70
|
# File 'lib/eye/trigger.rb', line 62
def notify(transition)
debug "check (:#{transition.event}) :#{transition.from} => :#{transition.to}"
@transition = transition
check(transition) if filter_transition(transition)
rescue Exception, Timeout::Error => ex
log_ex(ex)
end
|
#run_in_process_context(p) ⇒ Object
88
89
90
|
# File 'lib/eye/trigger.rb', line 88
def run_in_process_context(p)
process.instance_exec(&p) if process.alive?
end
|