44: def initialize(options = {})
45: @watchers = []
46: @active_watchers = 0
47:
48: flags = 0
49:
50: options.each do |option, value|
51: case option
52: when :skip_environment
53: flags |= EVFLAG_NOEV if value
54: when :fork_check
55: flags |= EVFLAG_FORKCHECK if value
56: when :backend
57: value = [value] unless value.is_a? Array
58: value.each do |backend|
59: case backend
60: when :select then flags |= EVBACKEND_SELECT
61: when :poll then flags |= EVBACKEND_POLL
62: when :epoll then flags |= EVBACKEND_EPOLL
63: when :kqueue then flags |= EVBACKEND_KQUEUE
64: when :port then flags |= EVBACKEND_PORT
65: else raise ArgumentError, "no such backend: #{backend}"
66: end
67: end
68: else raise ArgumentError, "no such option: #{option}"
69: end
70: end
71:
72: @loop = ev_loop_new(flags)
73: end