Class: DNS::Server::Dispatcher::EventDispatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/faildns/server/dispatcher/eventdispatcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dispatcher) ⇒ EventDispatcher

Returns a new instance of EventDispatcher.



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 31

def initialize (dispatcher)
  @server     = dispatcher.server
  @dispatcher = dispatcher

  @chains = {
    :input  => [],
    :output => [],

    :custom => {}
  }
end

Instance Attribute Details

#dispatcherObject (readonly)

Returns the value of attribute dispatcher.



29
30
31
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 29

def dispatcher
  @dispatcher
end

#serverObject (readonly)

Returns the value of attribute server.



29
30
31
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 29

def server
  @server
end

Instance Method Details

#dispatch(chain, socket, message) ⇒ Object



43
44
45
46
47
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 43

def dispatch (chain, socket, message)
  @chains[chain].each {|callback|
    callback.call(socket, message)
  }
end

#fire(event, *args) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 49

def fire (event, *args)
  (@chain[:custom][event] || []).each {|callback|
    begin
      if callback.call(*args) == false
        return false
      end
    rescue Exception => e
    end
  }
end

#observe(event, callback, priority = 0) ⇒ Object



60
61
62
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 60

def observe (event, callback, priority=0)
  @chains[:custom][event].push((callback.is_a?(Event::Callback)) ? callback : Event::Callback.new(callback, priority))
end

#register(chain, callback, priority = 0) ⇒ Object



64
65
66
# File 'lib/faildns/server/dispatcher/eventdispatcher.rb', line 64

def register (chain, callback, priority=0)
  @chains[chain].push((callback.is_a?(Event::Callback)) ? callback : Event::Callback.new(callback, priority))
end