Set timeout for kevent call
[god.git] / lib / god / event_handler.rb
blobca7e9922544489329714b42395351ffe9937fa57
1 module God
2   class EventHandler
3     @@actions = {}
4     @@handler = nil
5     
6     def self.handler=(value)
7       @@handler = value
8     end
9     
10     def self.register(pid, event, &block)
11       @@actions[pid] ||= {}
12       @@actions[pid][event] = block
13       puts 'a'
14       @@handler.register_process(pid, @@actions[pid].keys)
15       puts 'b'
16     end
17     
18     def self.deregister(pid, event=nil)
19       # If no event is given, clear everything
20       if event.nil?
21         @@actions.delete(pid)
22       else
23         @@actions[pid].delete(event)
24       end
25     end
26     
27     def self.call(pid, event)
28       @@actions[pid][event].call
29     end
30     
31     def self.watching_pid?(pid)
32       @@actions[pid]
33     end
34     
35     def self.start
36       Thread.new do
37         loop do
38           @@handler.handle_events
39         end
40       end
41     end
42     
43   end
44 end