Class: MIDIOps::Handler
- Inherits:
-
Object
- Object
- MIDIOps::Handler
- Defined in:
- lib/midiops/handler.rb
Defined Under Namespace
Modules: Status
Instance Method Summary collapse
- #add(event, handler) ⇒ Object
- #handle(event) ⇒ Object
- #has_handler? ⇒ Boolean
-
#initialize(worker_number) ⇒ Handler
constructor
A new instance of Handler.
- #push_job(job) ⇒ Object
Constructor Details
#initialize(worker_number) ⇒ Handler
Returns a new instance of Handler.
12 13 14 15 16 |
# File 'lib/midiops/handler.rb', line 12 def initialize worker_number @handlers = {} @events = [] @waiting_param = false end |
Instance Method Details
#add(event, handler) ⇒ Object
21 22 23 |
# File 'lib/midiops/handler.rb', line 21 def add event, handler @handlers.set_by_keys event, handler end |
#handle(event) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/midiops/handler.rb', line 36 def handle event if @waiting_param prc = @handlers.get_by_keys(*@events)[:ARG] EM.defer(Proc.new { prc.call(event) }) @events.clear @waiting_param = false else @events << event case has_handler? when Status::HAS_HANDLER EM.defer(@handlers.get_by_keys(*@events)) unless @handlers.get_by_keys(*@events).nil? @events.clear when Status::NO_HANDLERS @events.clear when Status::HANDLER_INDEFINITE # do nothing end end end |
#has_handler? ⇒ Boolean
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/midiops/handler.rb', line 25 def has_handler? if @handlers.keys?(*@events).nil? Status::NO_HANDLERS elsif @handlers.get_by_keys(*@events).is_a? Hash @waiting_param = true unless @handlers.get_by_keys(*@events)[:ARG].nil? Status::HANDLER_INDEFINITE else Status::HAS_HANDLER end end |
#push_job(job) ⇒ Object
18 19 |
# File 'lib/midiops/handler.rb', line 18 def push_job job end |