Class: DRbQS::ServerHook

Inherits:
Object
  • Object
show all
Defined in:
lib/drbqs/server_hook.rb

Instance Method Summary collapse

Constructor Details

#initializeServerHook

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