Exemple #1
0
        private static Uri ConvertToGatewayUri(ISiloIntance gateway)
        {
            // ReSharper disable once PossibleInvalidOperationException
            var address = SiloAddress.New(new IPEndPoint(IPAddress.Parse(gateway.Address), gateway.ProxyPort.Value), gateway.Generation);

            return(address.ToGatewayUri());
        }
        public static MembershipEntry AsMembershipEntry(this ISiloIntance siloIntance)
        {
            var entry = new MembershipEntry
            {
                SiloName     = siloIntance.SiloName,
                HostName     = siloIntance.HostName,
                Status       = (SiloStatus)siloIntance.Status,
                RoleName     = siloIntance.RoleName,
                UpdateZone   = siloIntance.UpdateZone,
                FaultZone    = siloIntance.FaultZone,
                StartTime    = siloIntance.StartTime.UtcDateTime,
                IAmAliveTime = siloIntance.IAmAliveTime.UtcDateTime,
                SiloAddress  = SiloAddress.New(new IPEndPoint(IPAddress.Parse(siloIntance.Address), siloIntance.Port), siloIntance.Generation)
            };

            if (siloIntance.ProxyPort.HasValue)
            {
                entry.ProxyPort = siloIntance.ProxyPort.Value;
            }

            var suspectingSilos = new List <SiloAddress>();
            var suspectingTimes = new List <DateTime>();

            foreach (var silo in siloIntance.SuspectingSilos)
            {
                suspectingSilos.Add(SiloAddress.FromParsableString(silo));
            }

            foreach (var time in siloIntance.SuspectingTimes)
            {
                suspectingTimes.Add(time.UtcDateTime);
            }

            if (suspectingSilos.Count != suspectingTimes.Count)
            {
                throw new OrleansException(
                          $"SuspectingSilos.Length of {suspectingSilos.Count} as read from Cassandra " +
                          $"is not equal to SuspectingTimes.Length of {suspectingTimes.Count}");
            }

            for (var i = 0; i < suspectingSilos.Count; i++)
            {
                entry.AddSuspector(suspectingSilos[i], suspectingTimes[i]);
            }

            return(entry);
        }