private NodeRoleAndSiblings GetSiblingSentinelsOfSentinel(string masterName, IRedisConnection connection) { if (masterName.IsEmpty()) { throw new ArgumentNullException("masterName"); } try { using (var command = new RedisCommand(-1, RedisCommandList.Sentinel, RedisCommandType.SendAndReceive, RedisCommandList.Sentinels, masterName.ToBytes())) { var raw = command.ExpectArray(connection, false); if (!ReferenceEquals(raw, null)) { var rawValue = raw.Value; if (!ReferenceEquals(rawValue, null) && rawValue.Type == RedisRawObjectType.Array) { var sentinelInfos = RedisSentinelNodeInfo.ParseInfoResponse(rawValue); 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); }
public RedisResult <RedisSentinelNodeInfo[]> Sentinels(string masterName) { if (masterName.IsEmpty()) { throw new ArgumentNullException("masterName"); } var raw = ExpectArray(RedisCommandList.Sentinel, RedisCommandList.Sentinels, masterName.ToBytes()); if (!ReferenceEquals(raw, null)) { var rawValue = raw.Value; if (!ReferenceEquals(rawValue, null) && rawValue.Type == RedisRawObjectType.Array) { var items = RedisSentinelNodeInfo.ParseInfoResponse(rawValue); if (!items.IsEmpty()) { return(new RedisResult <RedisSentinelNodeInfo[]>(items)); } } } return(new RedisResult <RedisSentinelNodeInfo[]>(null)); }