Since we are working in a single Thread, multiple Fiber environment, disable the multithread Mutex as it will not work.
DEFAULT_OPTIONS[:multithread] = false
# File lib/memcache/event_machine.rb, line 50 50: def close 51: sock = Thread.current[fiber_key] 52: if sock 53: sock.close if !sock.closed? 54: Thread.current[fiber_key] = nil 55: end 56: @retry = nil 57: @status = "NOT CONNECTED" 58: end
# File lib/memcache/event_machine.rb, line 17 17: def fiber_key 18: @fiber_key ||= "memcached-#{@host}-#{@port}" 19: end
# File lib/memcache/event_machine.rb, line 21 21: def socket 22: sock = Thread.current[fiber_key] 23: return sock if sock and not sock.closed? 24: 25: Thread.current[fiber_key] = nil 26: 27: # If the host was dead, don't retry for a while. 28: return if @retry and @retry > Time.now 29: 30: Thread.current[fiber_key] ||= begin 31: sock = EM::SocketConnection.connect(@host, @port, @timeout) 32: yielding = true 33: fiber = Fiber.current 34: sock.callback do 35: @status = 'CONNECTED' 36: @retry = nil 37: yielding = false 38: fiber.resume if Fiber.current != fiber 39: end 40: sock.errback do 41: sock = nil 42: yielding = false 43: fiber.resume if Fiber.current != fiber 44: end 45: Fiber.yield if yielding 46: sock 47: end 48: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.