Sha256: 3030c9b1ae259030e4f86f55743e452b076e1d774ed32e841894a67c9abc4f08
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
require 'socket' require 'timeout' class FastCache::Memcache::Node attr_reader :host, :port, :status attr_accessor :weight CONNECT_TIMEOUT = 0.25 RETRY_DELAY = 10.0 def initialize(host, port) @host = host @port = port @weight = 1 @status = :disconnected @socket = nil @retry = nil end def read(*a) socket.read(*a) end def write(data) socket.write(data) end def gets socket.gets end def close socket.close if @socket @socket = nil end def connect socket end private def socket return @socket if @socket && !@socket.closed? @socket = nil # If the host was dead, don't retry for a while. return if @retry and @retry > Time.now # Attempt to connect if not already connected. begin @socket = timeout CONNECT_TIMEOUT do TCPSocket.new @host, @port end @retry = nil @status = :connected rescue SocketError, SystemCallError, IOError, Timeout::Error => err @status = :dead @socket = nil @retry = Time.now + RETRY_DELAY end @socket rescue IOError @socket = nil retry end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
binary42-fastcache-0.2 | lib/fastcache/memcache/node.rb |
binary42-fastcache-0.3 | lib/fastcache/memcache/node.rb |