Class: DRbQS::ServerHook
- Inherits:
-
Object
- Object
- DRbQS::ServerHook
- Defined in:
- lib/drbqs/server_hook.rb
Instance Method Summary collapse
- #add(key, name = nil, &block) ⇒ Object
- #delete(key, name = nil) ⇒ Object
- #exec(key, *args) ⇒ Object
- #hook_names(key) ⇒ Object
-
#initialize ⇒ ServerHook
constructor
A new instance of ServerHook.
- #set_finish_exit(&block) ⇒ Object
Constructor Details
#initialize ⇒ ServerHook
Returns a new instance of ServerHook.
3 4 5 6 7 8 9 |
# File 'lib/drbqs/server_hook.rb', line 3 def initialize @hook = Hash.new { |h, k| h[k] = Array.new } @argument_number = {} @finish_exit = nil set_argument_number(:empty_queue, 1) set_argument_number(:finish, 1) end |
Instance Method Details
#add(key, name = nil, &block) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/drbqs/server_hook.rb', line 26 def add(key, name = nil, &block) if (n = @argument_number[key]) && (block.arity != n) raise ArgumentError, "Invalid argument number of hook of #{key.inspect}." end name ||= create_proc_name(key) @hook[key] << [name, block] name end |
#delete(key, name = nil) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/drbqs/server_hook.rb', line 35 def delete(key, name = nil) if name @hook[key].delete_if { |ary| ary[0] == name } else @hook[key].clear end end |
#exec(key, *args) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/drbqs/server_hook.rb', line 55 def exec(key, *args) @hook[key].each do |ary| ary[1].call(*args) end specific_proc(key) end |
#hook_names(key) ⇒ Object
51 52 53 |
# File 'lib/drbqs/server_hook.rb', line 51 def hook_names(key) @hook[key].map { |a| a[0] } end |
#set_finish_exit(&block) ⇒ Object
62 63 64 |
# File 'lib/drbqs/server_hook.rb', line 62 def set_finish_exit(&block) @finish_exit = block end |