class Redis::Connection::RedisClient

def connected?

def connected?
  @connected
end

def connection_completed

def connection_completed
  @connected = true
  succeed
end

def post_init

def post_init
  @req = nil
  @connected = false
  @reader = ::Hiredis::Reader.new
end

def read

def read
  @req = EventMachine::DefaultDeferrable.new
  EventMachine::Synchrony.sync @req
end

def receive_data(data)

def receive_data(data)
  @reader.feed(data)
  begin
    until (reply = @reader.gets) == false
      reply = CommandError.new(reply.message) if reply.is_a?(RuntimeError)
      @req.succeed [:reply, reply]
    end
  rescue RuntimeError => err
    @req.fail [:error, ProtocolError.new(err.message)]
  end
end

def send(data)

def send(data)
  callback { send_data data }
end

def unbind

def unbind
  @connected = false
  if @req
    @req.fail [:error, Errno::ECONNRESET]
    @req = nil
  else
    fail
  end
end