public RedisManagedServerNode(RedisManagerSettings settings, RedisRole role, RedisManagedServer server, Action <object, RedisCardioPulseStatus> onPulseStateChange, bool ownsSeed = true) : base(settings, role, server, onPulseStateChange, ownsSeed) { m_OnPulseStateChange = onPulseStateChange; m_EndPoint = (server != null) ? server.EndPoint : RedisEndPoint.Empty; if (server != null) { server.SetOnPulseStateChange(onPulseStateChange); } }
private RedisManagedNodesGroup ToNodesGroup(RedisRole role, RedisAsyncClient[] clients) { if (!clients.IsEmpty()) { var baseSettings = Settings; var nodeList = new List <RedisManagedNode>(); foreach (var client in clients) { try { if (client != null && client.Connected) { IPEndPoint ipEP = null; var endPoint = client.EndPoint; if (endPoint != null) { ipEP = endPoint as IPEndPoint; if (ipEP == null) { var dnsEP = endPoint as DnsEndPoint; if (dnsEP != null) { var ipEPs = (new RedisEndPoint(dnsEP.Host, dnsEP.Port)).ResolveHost(); if (!ipEPs.IsEmpty()) { ipEP = new IPEndPoint(ipEPs[0], dnsEP.Port); } } } } if (ipEP == null) { client.Dispose(); } else { var settings = (RedisManagerSettings)baseSettings.Clone(ipEP.Address.ToString(), ipEP.Port); if (role == RedisRole.Sentinel) { var listener = new RedisManagedSentinelListener(client, settings, null); nodeList.Add(new RedisManagedSentinelNode(settings, listener, null)); } else { var server = new RedisManagedServer(client, settings, role, null); nodeList.Add(new RedisManagedServerNode(settings, role, server, null)); } } } } catch (Exception) { client.Dispose(); } } if (nodeList.Count > 0) { var settings = (RedisManagerSettings)Settings; return(role != RedisRole.Sentinel ? (RedisManagedNodesGroup)(new RedisManagedServerGroup(settings, role, nodeList.Cast <RedisManagedServerNode>().ToArray(), null)) : new RedisManagedSentinelGroup(settings, settings.MasterName, nodeList.Cast <RedisManagedSentinelNode>().ToArray(), null)); } } return(null); }