Exemple #1
0
 public RespValue Execute(IExecutionContext context, RespValue request)
 {
     try
     {
         EnsureArray(request);
         var requestParts = request.GetItems();
         EnsureNonEmptyArray(requestParts);
         var commandPart = requestParts.First();
         var argumentsPart = requestParts.Skip(1).ToArray();
         var commandName = commandPart.GetString().ToUpperInvariant();
         ICommand command;
         if (!commandsMap.TryGetValue(commandName, out command))
         {
             return RespValue.Error(string.Format("ERR Unknown command '{0}'", commandName));
         }
         return command.Execute(context, argumentsPart);
     }
     catch (Exception)
     {
         return SharedContrants.UnknownError;
     }
 }
Exemple #2
0
 private static void WriteRespValue(Stream stream, RespValue respValue)
 {
     switch (respValue.Type)
     {
         case RespValueType.SimpleString:
             WriteSimpleString(stream, respValue);
             break;
         case RespValueType.Error:
             WriteErrorString(stream, respValue);
             break;
         case RespValueType.BulkString:
             WriteBulkString(stream, respValue);
             break;
         case RespValueType.Array:
         {
             if (respValue.IsNull())
             {
                 WriteNullable(stream, '*');
             }
             else
             {
                 var respValues = respValue.GetItems();
                 WriteHeader(stream, '*');
                 WriteInt(stream, respValues.Length);
                 WriteCrLf(stream);
                 foreach (var item in respValues)
                     WriteRespValue(stream, item);
             }
             break;
         }
         case RespValueType.Integer:
         {
             WriteInteger(stream, respValue);
             break;
         }
         default:
             throw new ArgumentOutOfRangeException("respValue", respValue.Type.ToString());
     }
 }