14 when /darwin/i, /bsd/i
15 require 'god/event_handlers/kqueue_handler'
16 @@handler = KQueueHandler
18 require 'god/event_handlers/netlink_handler'
19 @@handler = NetlinkHandler
21 raise NotImplementedError, "Platform not supported for EventHandler"
25 require 'god/event_handlers/dummy_handler'
26 @@handler = DummyHandler
31 def self.register(pid, event, &block)
33 @@actions[pid][event] = block
34 @@handler.register_process(pid, @@actions[pid].keys)
37 def self.deregister(pid, event=nil)
41 @@handler.register_process(pid, []) if system("kill -0 #{pid} &> /dev/null")
43 @@actions[pid].delete(event)
44 @@handler.register_process(pid, @@actions[pid].keys) if system("kill -0 #{pid} &> /dev/null")
49 def self.call(pid, event)
50 @@actions[pid][event].call if watching_pid?(pid) && @@actions[pid][event]
53 def self.watching_pid?(pid)
60 @@handler.handle_events