Class: Wye::Switch
- Inherits:
-
Object
- Object
- Wye::Switch
- Defined in:
- lib/wye/switch.rb
Instance Attribute Summary collapse
-
#base_class ⇒ Object
readonly
Returns the value of attribute base_class.
Instance Method Summary collapse
- #current_alternate(klass, cta = nil) ⇒ Object
-
#initialize(base_class) ⇒ Switch
constructor
A new instance of Switch.
- #on(klass, alternate) ⇒ Object
Constructor Details
#initialize(base_class) ⇒ Switch
Returns a new instance of Switch.
5 6 7 8 9 |
# File 'lib/wye/switch.rb', line 5 def initialize(base_class) @base_class = base_class @thread_to_class_to_alternate = {} @mutex = Mutex.new end |
Instance Attribute Details
#base_class ⇒ Object (readonly)
Returns the value of attribute base_class.
3 4 5 |
# File 'lib/wye/switch.rb', line 3 def base_class @base_class end |
Instance Method Details
#current_alternate(klass, cta = nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/wye/switch.rb', line 11 def current_alternate(klass, cta = nil) return nil unless klass cta ||= class_to_alternate alternate = cta[klass] return alternate.first unless alternate.nil? || alternate.empty? return nil if klass == base_class current_alternate(klass.superclass, cta) end |
#on(klass, alternate) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/wye/switch.rb', line 22 def on(klass, alternate) class_to_alternate[klass] ||= [] class_to_alternate[klass].unshift(alternate) yield ensure class_to_alternate[klass].shift clean_up_after_dead_threads end |