class Redis

def raw_call_command(argvp)

def raw_call_command(argvp)
  pipeline = argvp[0].is_a?(Array)
  unless pipeline
    argvv = [argvp]
  else
    argvv = argvp
  end
  if MULTI_BULK_COMMANDS[argvv.flatten[0].to_s]
    # TODO improve this code
    argvp   = argvv.flatten
    values  = argvp.pop.to_a.flatten
    argvp   = values.unshift(argvp[0])
    command = ["*#{argvp.size}"]
    argvp.each do |v|
      v = v.to_s
      command << "$#{get_size(v)}"
      command << v
    end
    command = command.map {|cmd| "#{cmd}\r\n"}.join
  else
    command = ""
    argvv.each do |argv|
      bulk = nil
      argv[0] = argv[0].to_s.downcase
      argv[0] = ALIASES[argv[0]] if ALIASES[argv[0]]
      raise "#{argv[0]} command is disabled" if DISABLED_COMMANDS[argv[0]]
      if BULK_COMMANDS[argv[0]] and argv.length > 1
        bulk = argv[-1].to_s
        argv[-1] = get_size(bulk)
      end
      command << "#{argv.join(' ')}\r\n"
      command << "#{bulk}\r\n" if bulk
    end
  end
  results = maybe_lock { process_command(command, argvv) }
  
  return pipeline ? results : results[0]
end