示例#1
0
        public static RedisResultInfo MapResult(
            RedisTargetInfo targetInfo,
            RedisBatchInfo batchInfo,
            RedisCommandInfo commandInfo,
            object result)
        {
            switch (result)
            {
            case string str:
                return(new Simple(targetInfo, commandInfo, str));

            case long l:
                return(new Integer(targetInfo, commandInfo, l));

            case int i:
                return(new Integer(targetInfo, commandInfo, i));

            case byte[] bytes:
                return(new Bulk(targetInfo, commandInfo, bytes));

            case object[] array:
                return(new TransactionBulk(targetInfo, batchInfo, commandInfo, array));

            default:
                return(new None(targetInfo, commandInfo));
            }
        }
示例#2
0
            public TransactionBulk(
                RedisTargetInfo targetInfo,
                RedisBatchInfo batchInfo,
                RedisCommandInfo commandInfo,
                object[] array)
            {
                TargetInfo  = targetInfo;
                BatchInfo   = batchInfo;
                CommandInfo = commandInfo;

                var commandInfos = batchInfo.CommandInfos.SkipWhile(c => !c.IsMulti)
                                   .Skip(1)
                                   .ToArray();

                Array = array.Select((item, i) =>
                                     MapResult(targetInfo, i < commandInfos.Length ? commandInfos[i] : null, item))
                        .ToArray();
            }