示例#1
0
        protected void Process(RedisAsyncRequest[] requests)
        {
            if (requests != null)
            {
                var count = requests.Length;
                if (count > 0)
                {
                    var commands = requests.Select(r => r.Command).ToArray();
                    var results  = m_AsyncClient.Expect(commands);

                    for (var i = 0; i < count; i++)
                    {
                        var request = requests[i];
                        if (request.Expectation == RedisCommandExpect.Void)
                        {
                            request.Response = new RedisVoid(0);
                        }
                        else
                        {
                            request.Response = ToExpectation(results[i],
                                                             request.Expectation, request.ExpectedResult);
                        }
                    }
                }
            }
        }
示例#2
0
        private NodeRoleAndSiblings GetSiblingSentinelsOfSentinel(string masterName, RedisAsyncClient client)
        {
            if (masterName.IsEmpty())
            {
                throw new ArgumentNullException("masterName");
            }

            try
            {
                var response = client.Expect(new RedisCommand(-1, RedisCommandList.Sentinel, RedisCommandType.SendAndReceive,
                                                              RedisCommandList.Sentinels, masterName.ToBytes()));

                if (!ReferenceEquals(response, null) && response.Type == RedisResultType.Array)
                {
                    var result = response as RedisArray;
                    if (!ReferenceEquals(result, null))
                    {
                        var sentinelInfos = RedisSentinelNodeInfo.ParseInfoResponse(result);
                        if (sentinelInfos != null)
                        {
                            var length = sentinelInfos.Length;
                            if (length > 0)
                            {
                                var siblingEndPoints = new List <RedisEndPoint>(length);
                                for (var i = 0; i < length; i++)
                                {
                                    var sentinelInfo = sentinelInfos[i];

                                    if (!Disposed && sentinelInfo != null && sentinelInfo.Port.HasValue && !sentinelInfo.IPAddress.IsEmpty())
                                    {
                                        siblingEndPoints.Add(new RedisEndPoint(sentinelInfo.IPAddress, (int)sentinelInfo.Port.Value));
                                    }
                                }

                                if (!Disposed)
                                {
                                    return(new NodeRoleAndSiblings(RedisRole.Sentinel, siblingEndPoints.ToArray()));
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception)
            { }
            return(null);
        }