コード例 #1
0
 public static StreamsXPendingConsumerResult[] ThrowOrValueToXPendingConsumer(this RedisResult rt) =>
 rt.ThrowOrValue((a, _) =>
 {
     if (a == null)
     {
         return(new StreamsXPendingConsumerResult[0]);
     }
     var ret = new StreamsXPendingConsumerResult[a.Length];
     for (var z = 0; z < a.Length; z++)
     {
         var objs1 = a[z] as object[];
         ret[z]    = new StreamsXPendingConsumerResult {
             id = objs1[0].ConvertTo <string>(), consumer = objs1[1].ConvertTo <string>(), idle = objs1[2].ConvertTo <long>(), deliveredTimes = objs1[3].ConvertTo <long>()
         };
     }
     return(ret);
 });
コード例 #2
0
        public static RoleResult ThrowOrValueToRole(this RedisResult rt) =>
        rt.ThrowOrValue((a, _) =>
        {
            if (a?.Any() != true)
            {
                return(null);
            }
            var role = new RoleResult {
                role = a[0].ConvertTo <RoleType>()
            };
            switch (role.role)
            {
            case RoleType.Master:
                role.data = new RoleResult.MasterInfo
                {
                    _replication_offset = a[1].ConvertTo <long>(),
                    _slaves             = (a[2] as object[])?.Select(x =>
                    {
                        var xs = x as object[];
                        return(new RoleResult.MasterInfo.Slave
                        {
                            ip = xs[0].ConvertTo <string>(),
                            port = xs[1].ConvertTo <int>(),
                            slave_offset = xs[2].ConvertTo <long>()
                        });
                    }).ToArray()
                };
                break;

            case RoleType.Slave:
                role.data = new RoleResult.Slave
                {
                    master_ip         = a[1].ConvertTo <string>(),
                    master_port       = a[2].ConvertTo <int>(),
                    replication_state = a[3].ConvertTo <string>(),
                    data_received     = a[4].ConvertTo <long>()
                };
                break;

            case RoleType.Sentinel:
                role.data = a[1].ConvertTo <string[]>();
                break;
            }
            return(role);
        });
コード例 #3
0
ファイル: Streams.cs プロジェクト: zqlovejyc/FreeRedis
 public static StreamsXPendingResult ThrowOrValueToXPending(this RedisResult rt) =>
 rt.ThrowOrValue((a, _) =>
 {
     if (a?.Any() != true)
     {
         return(null);
     }
     var ret = new StreamsXPendingResult {
         count = a[0].ConvertTo <long>(), minId = a[1].ConvertTo <string>(), maxId = a[2].ConvertTo <string>()
     };
     var objs1     = a[3] as object[];
     ret.consumers = new StreamsXPendingResult.Consumer[objs1.Length];
     for (var z = 0; z < objs1.Length; z++)
     {
         var objs2        = objs1[z] as object[];
         ret.consumers[z] = new StreamsXPendingResult.Consumer {
             consumer = objs2[0].ConvertTo <string>(), count = objs2[1].ConvertTo <long>()
         };
     }
     return(ret);
 });
コード例 #4
0
ファイル: Streams.cs プロジェクト: zqlovejyc/FreeRedis
 public static StreamsEntry[] ThrowOrValueToStreamsEntryArray(this RedisResult rt) =>
 rt.ThrowOrValue((a, _) =>
 {
     if (a == null)
     {
         return(new StreamsEntry[0]);
     }
     var entries = new StreamsEntry[a.Length];
     for (var z = 0; z < a.Length; z++)
     {
         var objs1 = a[z] as object[];
         if (objs1 == null)
         {
             continue;
         }
         entries[z] = new StreamsEntry {
             id = objs1[0].ConvertTo <string>(), fieldValues = objs1[1] as object[]
         };
     }
     return(entries);
 });
コード例 #5
0
ファイル: Streams.cs プロジェクト: zqlovejyc/FreeRedis
 public static StreamsXInfoStreamFullResult ThrowOrValueToXInfoStreamFullResult(this RedisResult rt) =>
 rt.ThrowOrValue((objs_full, _) =>
 {
     if (objs_full == null)
     {
         return(null);
     }
     var objs_entries = objs_full[9] as object[];
     if (objs_entries != null)
     {
         objs_full[9] = objs_entries.Select(z =>
         {
             var objs_entry = z as object[];
             return(objs_entry == null ? null : new StreamsEntry {
                 id = objs_entry[0].ConvertTo <string>(), fieldValues = objs_entry[1] as object[]
             });
         }).ToArray();
     }
     var objs_groups = objs_full[11] as object[];
     if (objs_groups != null)
     {
         objs_full[11] = objs_groups.Select(z =>
         {
             var objs_group = z as object[];
             if (objs_group == null)
             {
                 return(null);
             }
             var objs_pendings = objs_group[7] as object[];
             if (objs_pendings != null)
             {
                 objs_group[7] = objs_pendings.Select(y =>
                 {
                     var objs_pending = y as object[];
                     if (objs_pending == null)
                     {
                         return(null);
                     }
                     return(new StreamsXInfoStreamFullResult.Group.Pending
                     {
                         id = objs_pending[0].ConvertTo <string>(),
                         consumer = objs_pending[1].ConvertTo <string>(),
                         seen_time = objs_pending[2].ConvertTo <long>(),
                         pel_count = objs_pending[3].ConvertTo <long>()
                     });
                 }).ToArray();
             }
             var objs_consumers = objs_group[9] as object[];
             if (objs_consumers != null)
             {
                 objs_group[9] = objs_consumers.Select(y =>
                 {
                     var objs_consumer = y as object[];
                     if (objs_consumer == null)
                     {
                         return(null);
                     }
                     var objs_consumer_pendings = objs_consumer[7] as object[];
                     if (objs_consumer_pendings != null)
                     {
                         objs_consumer[7] = objs_consumer_pendings.Select(x =>
                         {
                             var objs_consumer_pending = x as object[];
                             if (objs_consumer_pending == null)
                             {
                                 return(null);
                             }
                             return(new StreamsXInfoStreamFullResult.Group.Pending
                             {
                                 id = objs_consumer_pending[0].ConvertTo <string>(),
                                 consumer = objs_consumer[1].ConvertTo <string>(),
                                 seen_time = objs_consumer_pending[1].ConvertTo <long>(),
                                 pel_count = objs_consumer_pending[2].ConvertTo <long>()
                             });
                         }).ToArray();
                     }
                     return(objs_consumer.MapToClass <StreamsXInfoStreamFullResult.Group.Consumer>(rt.Encoding));
                 }).ToArray();
             }
             return(objs_group.MapToClass <StreamsXInfoStreamFullResult.Group>(rt.Encoding));
         }).ToArray();
     }
     return(objs_full.MapToClass <StreamsXInfoStreamFullResult>(rt.Encoding));
 });