Beispiel #1
0
        public Task <SiloAddress> OnAddActivation(PlacementStrategy strategy, PlacementTarget target, IPlacementContext context)
        {
            SiloAddress[] silos;
            if (target.InterfaceVersion == 0)
            {
                silos = context.GetCompatibleSilos(target);
            }
            else
            {
                var    silosByVersion = context.GetCompatibleSilosWithVersions(target);
                var    maxSiloCount   = 0;
                ushort version        = 0;
                foreach (var kvp in silosByVersion)
                {
                    if (kvp.Value.Length > maxSiloCount)
                    {
                        version      = kvp.Key;
                        maxSiloCount = kvp.Value.Length;
                    }
                }
                silos = silosByVersion[version];
            }

            return(Task.FromResult(silos[random.Next(silos.Length)]));
        }