Example #1
0
        private static string[] ParseCommandInfo(RedisRawObject response)
        {
            if (response != null &&
                response.Type == RedisRawObjectType.Array)
            {
                var items = response.Items;
                if (items != null)
                {
                    var count = items.Count;
                    if (count > 0)
                    {
                        var result = new List <string>(count);

                        foreach (var item in items)
                        {
                            if (item != null &&
                                item.Type == RedisRawObjectType.BulkString)
                            {
                                result.Add(item.DataText);
                            }
                        }

                        return(result.ToArray());
                    }
                }
            }
            return(null);
        }
Example #2
0
        public static RedisSlowLogInfo[] ToSlowLogInfo(RedisRawObject response)
        {
            if (response != null &&
                response.Type == RedisRawObjectType.Array)
            {
                var children = response.Items;
                if (children != null && children.Count > 0)
                {
                    var result = new List <RedisSlowLogInfo>(children.Count);

                    foreach (var child in children)
                    {
                        if (child != null &&
                            child.Type == RedisRawObjectType.Array)
                        {
                            var items = child.Items;
                            if (items != null && items.Count >= 4)
                            {
                                long id;
                                if (TryParseInteger(items[0], out id))
                                {
                                    long timeL;
                                    if (TryParseInteger(items[1], out timeL))
                                    {
                                        var time = timeL.FromUnixTimeStamp();

                                        long durationL;
                                        if (TryParseInteger(items[2], out durationL))
                                        {
                                            var duration = TimeSpan.FromMilliseconds(durationL);

                                            var commandInfo = ParseCommandInfo(items[3]);

                                            string clientInfo = null;
                                            string clientName = null;

                                            if (items.Count > 4)
                                            {
                                                clientInfo = ParseBulkString(items[4]);
                                                if (items.Count > 5)
                                                {
                                                    clientName = ParseBulkString(items[5]);
                                                }
                                            }

                                            result.Add(new RedisSlowLogInfo(id, time, duration, clientInfo, clientName, commandInfo));
                                        }
                                    }
                                }
                            }
                        }
                    }

                    return(result.ToArray());
                }
            }
            return(null);
        }
Example #3
0
        public static RedisMasterRoleSlaveInfo Parse(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) && rawObject.Type == RedisRawObjectType.Array)
            {
                var list = rawObject.Items;
                if (list != null)
                {
                    var count = list.Count;
                    if (count > 0)
                    {
                        var result = new RedisMasterRoleSlaveInfo();

                        var item = list[0];
                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                        {
                            result.IPAddress = item.DataText;
                        }

                        if (count > 1)
                        {
                            item = list[1];
                            if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                            {
                                var port = item.DataText;
                                if (!port.IsEmpty())
                                {
                                    int i;
                                    if (int.TryParse(port, out i))
                                    {
                                        result.Port = i;
                                    }
                                }
                            }

                            if (count > 2)
                            {
                                item = list[2];
                                if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                                {
                                    var offset = item.DataText;
                                    if (!offset.IsEmpty())
                                    {
                                        long l;
                                        if (long.TryParse(offset, out l))
                                        {
                                            result.ReplicationOffset = l;
                                        }
                                    }
                                }
                            }
                        }

                        return(result);
                    }
                }
            }
            return(null);
        }
Example #4
0
 private static string ParseBulkString(RedisRawObject response)
 {
     if (response != null &&
         response.Type == RedisRawObjectType.BulkString)
     {
         return(response.DataText);
     }
     return(null);
 }
Example #5
0
        protected virtual bool ProcessResult(IList <RedisRequest> requests, RedisRawObject rawObject)
        {
            if (requests != null)
            {
                var requestCount = requests.Count;
                if (requestCount > 0)
                {
                    var itemCount = 0;
                    IList <RedisRawObject> items = null;

                    if (!ReferenceEquals(rawObject, null))
                    {
                        items = rawObject.Items;
                        if (items != null)
                        {
                            itemCount = items.Count;
                        }
                        else
                        {
                            requests[0].ProcessResult(rawObject);
                            Cancel(requests, 1);

                            return(true);
                        }
                    }

                    for (var i = 0; i < requestCount; i++)
                    {
                        try
                        {
                            var request = requests[i];
                            if (ReferenceEquals(request, null))
                            {
                                continue;
                            }

                            var child = (i < itemCount) ? items[i] : null;
                            if (ReferenceEquals(child, null))
                            {
                                request.Cancel();
                                continue;
                            }

                            request.ProcessResult(child);
                        }
                        catch (Exception e)
                        {
                            SetException(requests, e, i);
                            throw;
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
Example #6
0
        private bool Receive(IList <RedisRequest> requests, RedisSocketContext context)
        {
            if (requests != null)
            {
                var requestCount = requests.Count;
                if (requestCount > 0)
                {
                    var socket = context.Socket;
                    if (socket.IsConnected())
                    {
                        using (var reader = new RedisSingleResponseReader(context.Settings))
                        {
                            for (var i = 0; i < requestCount; i++)
                            {
                                try
                                {
                                    var request = requests[i];
                                    if (ReferenceEquals(request, null))
                                    {
                                        continue;
                                    }

                                    var execResult = reader.Execute(socket);
                                    if (ReferenceEquals(execResult, null))
                                    {
                                        throw new RedisFatalException("Corrupted redis response data", RedisErrorCode.CorruptResponse);
                                    }

                                    execResult.HandleError();

                                    var rawObj = RedisRawObject.ToObject(execResult);
                                    if (ReferenceEquals(rawObj, null))
                                    {
                                        throw new RedisFatalException("Corrupted redis response data", RedisErrorCode.CorruptResponse);
                                    }

                                    request.ProcessResult(rawObj);
                                }
                                catch (Exception e)
                                {
                                    SetException(requests, e, i);
                                    throw;
                                }
                            }
                        }
                        return(true);
                    }
                }
            }
            return(false);
        }
        }                                                                                  // 0

        #endregion Properties

        #region Methods

        public static RedisSentinelNodeInfo[] ParseInfoResponse(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) &&
                rawObject.Type == RedisRawObjectType.Array)
            {
                var items = rawObject.Items;
                if (items != null)
                {
                    var count = items.Count;
                    if (count > 0)
                    {
                        var isInfoArray = true;
                        for (var i = 0; i < count; i++)
                        {
                            var item = items[i];
                            if (!ReferenceEquals(item, null) &&
                                item.Type != RedisRawObjectType.Array)
                            {
                                isInfoArray = false;
                                break;
                            }
                        }

                        if (!isInfoArray)
                        {
                            var info = new RedisSentinelNodeInfo(rawObject);
                            return(new[] { info });
                        }

                        var list = new List <RedisSentinelNodeInfo>(count);
                        for (var i = 0; i < count; i++)
                        {
                            var item = items[i];
                            if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.Array)
                            {
                                var info = new RedisSentinelNodeInfo(item);
                                list.Add(info);
                            }
                        }

                        if (list.Count > 0)
                        {
                            return(list.ToArray());
                        }
                    }
                }
            }
            return(null);
        }
Example #8
0
 public RedisRaw ExpectArray(RedisSocketContext context, bool throwException = true)
 {
     using (var response = ExecuteInternal(context, throwException))
     {
         if (response == null)
         {
             if (throwException)
             {
                 throw new RedisException("No data returned", RedisErrorCode.CorruptResponse);
             }
             return(null);
         }
         return(new RedisRaw(RedisRawObject.ToObject(response)));
     }
 }
Example #9
0
        private static bool TryParseInteger(RedisRawObject response, out long value)
        {
            value = RedisConstants.Zero;

            if (response != null &&
                response.Type == RedisRawObjectType.Integer)
            {
                var data = response.Data;
                if (data != null && data is long)
                {
                    value = (long)data;
                    return(true);
                }
            }
            return(false);
        }
Example #10
0
        protected override void ParseInfo(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) && rawObject.Type == RedisRawObjectType.Array)
            {
                var list = rawObject.Items;
                if (list != null)
                {
                    var count = list.Count;
                    if (count > 1)
                    {
                        var item = list[1];
                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                        {
                            var data = item.Data;
                            if (data is long)
                            {
                                ReplicationOffset = (long)data;
                            }
                            else if (data is int)
                            {
                                ReplicationOffset = (int)data;
                            }
                        }

                        if (count > 2)
                        {
                            var slaves = new List <RedisMasterRoleSlaveInfo>(count - 2);
                            for (var i = 2; i < count; i++)
                            {
                                var slaveInfo = RedisMasterRoleSlaveInfo.Parse(list[i]);
                                if (slaveInfo != null)
                                {
                                    slaves.Add(slaveInfo);
                                }
                            }

                            if (slaves.Count > 0)
                            {
                                Slaves = slaves.ToArray();
                            }
                        }
                    }
                }
            }
        }
Example #11
0
        protected override void ParseInfo(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) && rawObject.Type == RedisRawObjectType.Array)
            {
                var list = rawObject.Items;
                if (list != null)
                {
                    var count = list.Count;
                    if (count > 1)
                    {
                        var item = list[1];
                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.Array)
                        {
                            var items = item.Items;
                            if (items != null)
                            {
                                var itemCount = items.Count;
                                if (itemCount > 0)
                                {
                                    var masterNames = new List <string>(itemCount);
                                    for (var i = 0; i < itemCount; i++)
                                    {
                                        item = items[i];
                                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                                        {
                                            var masterName = item.DataText;
                                            if (!masterName.IsEmpty())
                                            {
                                                masterNames.Add(masterName);
                                            }
                                        }
                                    }

                                    if (masterNames.Count > 0)
                                    {
                                        MasterNames = masterNames.ToArray();
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Example #12
0
        public static RedisRoleInfo Parse(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) && rawObject.Type == RedisRawObjectType.Array)
            {
                var list = rawObject.Items;
                if (list != null)
                {
                    var count = list.Count;
                    if (count > 0)
                    {
                        var item = list[0];
                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                        {
                            var roleStr = item.DataText;
                            if (!roleStr.IsEmpty())
                            {
                                roleStr = roleStr.ToLowerInvariant();
                                var role = roleStr.ToRedisRole();

                                switch (role)
                                {
                                case RedisRole.Master:
                                case RedisRole.Slave:
                                case RedisRole.Sentinel:
                                {
                                    var result = new RedisSentinelRoleInfo(roleStr);
                                    result.ParseInfo(rawObject);
                                    return(result);
                                }

                                default:
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            return(null);
        }
Example #13
0
 private static RedisGeoPosition ToGeoPosition(RedisRawObject obj)
 {
     if (obj != null && obj.Type == RedisRawObjectType.Array)
     {
         var items = obj.Items;
         if (items != null && items.Count >= 2)
         {
             var item = items[0];
             if (item != null && item.Type == RedisRawObjectType.BulkString)
             {
                 var data = item.DataText;
                 if (!data.IsEmpty())
                 {
                     double longitude;
                     if (double.TryParse(data, out longitude))
                     {
                         item = items[1];
                         if (item != null && item.Type == RedisRawObjectType.BulkString)
                         {
                             data = item.DataText;
                             if (!data.IsEmpty())
                             {
                                 double latitude;
                                 if (double.TryParse(data, out latitude))
                                 {
                                     return(new RedisGeoPosition(longitude, latitude));
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return(RedisGeoPosition.Empty);
 }
Example #14
0
        }                                                                                            // 30000

        #endregion Properties

        #region Methods

        protected virtual void Parse(RedisRawObject rawObject)
        {
            if (!ReferenceEquals(rawObject, null) && rawObject.Type == RedisRawObjectType.Array)
            {
                var items = rawObject.Items;
                if (items != null)
                {
                    var count = items.Count;
                    if (count > 0)
                    {
                        for (var i = 0; i < count; i += 2)
                        {
                            var item = items[i];
                            if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                            {
                                var key = item.DataText;
                                if (!key.IsEmpty())
                                {
                                    var value = (string)null;
                                    if (i < count - 1)
                                    {
                                        item = items[i + 1];
                                        if (!ReferenceEquals(item, null) && item.Type == RedisRawObjectType.BulkString)
                                        {
                                            value = item.DataText;
                                        }
                                    }

                                    base[key] = value;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #15
0
        public static RedisGeoRadiusResult ToGeoRadiusResult(RedisRawObject obj)
        {
            if (obj != null)
            {
                if (obj.Type == RedisRawObjectType.BulkString)
                {
                    var member = obj.DataText;
                    if (member != null)
                    {
                        return(new RedisGeoRadiusResult(member));
                    }
                }
                else if (obj.Type == RedisRawObjectType.Array)
                {
                    var items = obj.Items;
                    if (items == null)
                    {
                        return(null);
                    }

                    var count = items.Count;
                    if (count < 1)
                    {
                        return(null);
                    }

                    object           data;
                    string           member   = null;
                    double?          distance = null;
                    long?            hash     = null;
                    RedisGeoPosition?coord    = null;

                    var item = items[0];
                    if (item != null && item.Type == RedisRawObjectType.BulkString)
                    {
                        member = item.DataText;
                    }

                    for (var i = 1; i < count; i++)
                    {
                        var child = items[i];
                        if (child != null)
                        {
                            if (child.Type == RedisRawObjectType.Array)
                            {
                                coord = ToGeoPosition(child);
                            }
                            else
                            {
                                if (child.Type == RedisRawObjectType.Integer)
                                {
                                    data = child.Data;
                                    if (data is long)
                                    {
                                        hash = (long)data;
                                    }
                                }
                                else if (child.Type == RedisRawObjectType.BulkString)
                                {
                                    var str = child.DataText;
                                    if (str != null)
                                    {
                                        var d = 0d;
                                        if (double.TryParse(str, out d))
                                        {
                                            distance = d;
                                        }
                                    }
                                }
                            }
                        }
                    }

                    return(new RedisGeoRadiusResult(member, coord, distance, hash));
                }
            }
            return(null);
        }
        private void ProcessReceiveQueue()
        {
            var queue = m_ReceiveQ;

            if (queue == null)
            {
                return;
            }

            m_ReceiveGate.Reset();

            var idleTime  = 0;
            var idleStart = DateTime.MinValue;

            var request = (RedisAsyncRequest)null;

            try
            {
                using (var reader = new RedisSingleResponseReader(Settings))
                {
                    var idleTimeout = IdleTimeout;

                    while (Processing)
                    {
                        if (!queue.TryDequeue(out request))
                        {
                            if (m_ReceiveGate.Wait(SpinSleepTime))
                            {
                                m_ReceiveGate.Reset();
                            }
                            else
                            {
                                idleTime += SpinSleepTime;
                                if (idleTime >= idleTimeout)
                                {
                                    break;
                                }
                            }
                            continue;
                        }

                        using (request)
                        {
                            if (idleTime > 0)
                            {
                                var command = request.Command;
                                if (ReferenceEquals(command, null) || !command.IsHeartBeat)
                                {
                                    idleTime = 0;
                                }
                            }

                            try
                            {
                                var context = m_CurrentContext;
                                if (context == null)
                                {
                                    continue;
                                }

                                if (!request.IsCompleted)
                                {
                                    var socket = context.Socket;
                                    if (socket.IsConnected())
                                    {
                                        try
                                        {
                                            var execResult = reader.Execute(socket);
                                            if (ReferenceEquals(execResult, null))
                                            {
                                                throw new RedisFatalException("Corrupted redis response data", RedisErrorCode.CorruptResponse);
                                            }

                                            execResult.HandleError();

                                            var rawObj = RedisRawObject.ToObject(execResult);
                                            if (ReferenceEquals(rawObj, null))
                                            {
                                                throw new RedisFatalException("Corrupted redis response data", RedisErrorCode.CorruptResponse);
                                            }

                                            if (!request.ProcessResult(rawObj))
                                            {
                                                request.Cancel();
                                            }
                                        }
                                        catch (Exception e)
                                        {
                                            request.SetException(e);
                                        }
                                    }
                                }
                            }
                            catch (Exception)
                            { }
                        }
                    }
                }
            }
            finally
            {
                while (queue.TryDequeue(out request))
                {
                    try { request.Cancel(); }
                    catch (Exception) { }
                }
            }
        }
Example #17
0
        public static RedisRawObject ToObject(IRedisRawResponse response)
        {
            if (response == null)
            {
                return(null);
            }

            var type = response.Type;

            if (type == RedisRawObjectType.Undefined)
            {
                throw new RedisException("Undefined redis response", RedisErrorCode.CorruptResponse);
            }

            object data  = null;
            var    bytes = response.Data;

            if (bytes != null)
            {
                switch (type)
                {
                case RedisRawObjectType.SimpleString:
                case RedisRawObjectType.Error:
                    data = bytes.ToUTF8String();
                    break;

                case RedisRawObjectType.BulkString:
                    data = bytes;
                    break;

                case RedisRawObjectType.Integer:
                    if (bytes.Length == 0)
                    {
                        throw new RedisException("Invalid integer value", RedisErrorCode.CorruptResponse);
                    }

                    long l;
                    if (!long.TryParse(bytes.ToUTF8String(), out l))
                    {
                        throw new RedisException("Invalid integer value", RedisErrorCode.CorruptResponse);
                    }

                    data = l;
                    break;

                default:
                    break;
                }
            }

            var result = new RedisRawObject(type, data);

            result.TypeByte = response.TypeByte;

            if (type == RedisRawObjectType.Array && response.Length > -1)
            {
                var list = new List <RedisRawObject>(response.Length);
                result.m_List = new ReadOnlyCollection <RedisRawObject>(list);

                if (response.Length > 0)
                {
                    var items = response.Items;
                    if (items != null)
                    {
                        foreach (var item in items)
                        {
                            if (item != null)
                            {
                                var child = ToObject(item);
                                if (child != null)
                                {
                                    list.Add(child);
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
Example #18
0
        private static void Write(RedisRawObject obj, StringBuilder sBuilder, int indent = 0, int number = 0)
        {
            var indentStr = new string(' ', Math.Max(0, 2 * indent));

            sBuilder.Append(indentStr);

            if (number > 0)
            {
                sBuilder.Append(number);
                sBuilder.Append(") ");
            }

            if (ReferenceEquals(obj, null))
            {
                sBuilder.AppendLine("(nil)");
                return;
            }

            var data = obj.Data;

            switch (obj.Type)
            {
            case RedisRawObjectType.BulkString:
            {
                var bytes = data as byte[];
                if (bytes == null)
                {
                    sBuilder.AppendLine("(nil)");
                }
                else if (bytes.Length == 0)
                {
                    sBuilder.AppendLine("(empty)");
                }
                else
                {
                    sBuilder.Append('"');
                    sBuilder.Append(bytes.ToUTF8String());
                    sBuilder.Append('"');
                    sBuilder.AppendLine();
                }
            }
            break;

            case RedisRawObjectType.SimpleString:
            case RedisRawObjectType.Error:
            {
                if (obj.Type == RedisRawObjectType.Error)
                {
                    sBuilder.Append("(error) ");
                }

                var str = data as string;
                if (str == null)
                {
                    sBuilder.AppendLine("(nil)");
                }
                else if (str == String.Empty)
                {
                    sBuilder.AppendLine("(empty)");
                }
                else
                {
                    sBuilder.Append('"');
                    sBuilder.Append(str);
                    sBuilder.Append('"');
                    sBuilder.AppendLine();
                }
            }
            break;

            case RedisRawObjectType.Integer:
            {
                sBuilder.Append("(integer) ");

                object l = null;
                if (data is long || data is double)
                {
                    l = data;
                }

                if (l == null)
                {
                    sBuilder.AppendLine("(nil)");
                }
                else
                {
                    sBuilder.Append(l);
                    sBuilder.AppendLine();
                }
            }
            break;

            case RedisRawObjectType.Array:
            {
                if (obj.Count == 0)
                {
                    sBuilder.AppendLine("(empty list or set)");
                }
                else
                {
                    var items = obj.Items;
                    if (items == null || items.Count == 0)
                    {
                        sBuilder.AppendLine("(empty list or set)");
                    }
                    else
                    {
                        var length = items.Count;
                        for (var i = 0; i < length; i++)
                        {
                            Write(items[i], sBuilder, indent + 1, i + 1);
                        }
                    }
                }
            }
            break;

            default:
                sBuilder.AppendFormat("(Unknown reply type: {0})", obj.TypeByte);
                sBuilder.AppendLine();
                break;
            }
        }
Example #19
0
        public virtual bool ProcessResult(RedisRawObject rawObj)
        {
            if (!ReferenceEquals(rawObj, null))
            {
                var data = rawObj.Data;
                switch (Expectation)
                {
                case RedisCommandExpect.BulkString:
                {
                    var str = ReferenceEquals(data, null) ? null :
                              (data is byte[] ? ((byte[])data).ToUTF8String() : data.ToString());

                    RedisString result = str;
                    SetResult(str);
                }
                    return(true);

                case RedisCommandExpect.BulkStringBytes:
                {
                    var bytes = ReferenceEquals(data, null) ? null :
                                (data is byte[] ? (byte[])data : data.ToBytes());

                    RedisBytes result = bytes;
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.SimpleString:
                {
                    var str = ReferenceEquals(data, null) ? null :
                              (data is string?(string)data : data.ToString());

                    if (m_OKIf.IsEmpty())
                    {
                        RedisString result = str;
                        SetResult(result);
                    }
                    else
                    {
                        RedisBool result = m_OKIf == str;
                        SetResult(result);
                    }
                }
                    return(true);

                case RedisCommandExpect.SimpleStringBytes:
                {
                    var str = ReferenceEquals(data, null) ? null :
                              (data is string?(string)data : data.ToString());

                    if (m_OKIf.IsEmpty())
                    {
                        RedisBytes result = str.ToBytes();
                        SetResult(result);
                    }
                    else
                    {
                        RedisBool result = m_OKIf == str;
                        SetResult(result);
                    }
                }
                    return(true);

                case RedisCommandExpect.OK:
                {
                    RedisBool result = RedisConstants.OK.Equals(data);
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.One:
                {
                    RedisBool result = RedisConstants.One.Equals(data);
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.GreaterThanZero:
                {
                    RedisBool result = RedisConstants.Zero.CompareTo(data) == -1;
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.Nothing:
                    SetResult(RedisVoidVal.Value);
                    return(true);

                case RedisCommandExpect.Response:
                case RedisCommandExpect.Array:
                {
                    var response = data as RedisRawObject;
                    var result   = new RedisRaw(response);

                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.Double:
                {
                    RedisDouble result = (double)data;
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.Integer:
                {
                    if (data is long)
                    {
                        RedisInteger result = (long)data;
                        SetResult(result);
                    }
                    else
                    {
                        RedisInteger result = (int)data;
                        SetResult(result);
                    }
                }
                    return(true);

                case RedisCommandExpect.MultiDataBytes:
                {
                    var bytes = data as byte[][];

                    RedisMultiBytes result = bytes;
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.MultiDataStrings:
                {
                    var strings = data as string[];

                    RedisMultiString result = strings;
                    SetResult(result);
                }
                    return(true);

                case RedisCommandExpect.NullableDouble:
                {
                    if (data is double)
                    {
                        RedisNullableDouble result = (double)data;
                        SetResult(result);
                    }
                    else if (data is double?)
                    {
                        RedisNullableDouble result = (double?)data;
                        SetResult(result);
                    }
                    else
                    {
                        var result = new RedisNullableDouble(null);
                        SetResult(result);
                    }
                }
                    return(true);

                case RedisCommandExpect.NullableInteger:
                {
                    if (data is long)
                    {
                        RedisNullableInteger result = (long)data;
                        SetResult(result);
                    }
                    else if (data is long?)
                    {
                        RedisNullableInteger result = (long?)data;
                        SetResult(result);
                    }
                    else if (data is int)
                    {
                        RedisNullableInteger result = (int)data;
                        SetResult(result);
                    }
                    else if (data is int?)
                    {
                        RedisNullableInteger result = (int?)data;
                        SetResult(result);
                    }
                    else
                    {
                        var result = new RedisNullableInteger(null);
                        SetResult(result);
                    }
                }
                    return(true);

                default:
                    SetResult(data);
                    return(true);
                }
            }
            return(false);
        }
Example #20
0
 internal RedisSentinelInfoBase(RedisRawObject rawObject)
 {
     Parse(rawObject);
 }
 internal RedisSentinelNodeInfo(RedisRawObject rawObject)
     : base(rawObject)
 {
 }
Example #22
0
 protected virtual void ParseInfo(RedisRawObject rawObject)
 {
 }