Methods
- B
- N
- W
Included Modules
- DRbUndumped
Class Public methods
Source: show
# File rails/railties/lib/commands/ncgi/tracker, line 13 def initialize(instances, socket_path) @instances = instances @socket = File.expand_path(socket_path) @active = false @listeners = [] @instances.times { @listeners << Mutex.new } message "using #{@listeners.length} listeners" message "opening socket at #{@socket}" @service = DRb.start_service("drbunix://#{@socket}", self) end
Instance Public methods
Source: show
# File rails/railties/lib/commands/ncgi/tracker, line 53 def background(check_interval = nil) if check_interval loop do sleep check_interval message "Idle for #{check_interval}, shutting down" unless @active @active = false Kernel.exit 0 end else DRb.thread.join end end
Source: show
# File rails/railties/lib/commands/ncgi/tracker, line 27 def with_listener message "listener requested" mutex = has_lock = index = nil 3.times do @listeners.each_with_index do |mutex, index| has_lock = mutex.try_lock break if has_lock end break if has_lock sleep 0.05 end if has_lock message "obtained listener #{index}" @active = true begin yield index ensure mutex.unlock message "released listener #{index}" end else message "dropping request because no listeners are available!" end end