MemCache::EventedServer

Since we are working in a single Thread, multiple Fiber environment, disable the multithread Mutex as it will not work.

 DEFAULT_OPTIONS[:multithread] = false

Public Instance Methods

close() click to toggle source
    # 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
fiber_key() click to toggle source
    # File lib/memcache/event_machine.rb, line 17
17:     def fiber_key
18:       @fiber_key ||= "memcached-#{@host}-#{@port}"
19:     end
socket() click to toggle source
    # 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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.