Akka.Routing.ResizablePoolCell.Resize C# (CSharp) Method

Resize() private method

private Resize ( bool initial ) : void
initial bool
return void
        internal void Resize(bool initial)
        {
            if (_resizeInProgress.Value || initial)
                try
                {
                    var requestedCapacity = resizer.Resize(Router.Routees);
                    if (requestedCapacity > 0)
                    {
                        var newRoutees = new List<Routee>();
                        for (var i = 0; i < requestedCapacity; i++)
                        {
                            newRoutees.Add(_pool.NewRoutee(RouteeProps, this));
                        }
                        AddRoutees(newRoutees.ToArray());
                    }
                    else if (requestedCapacity < 0)
                    {
                        var currentRoutees = Router.Routees;
                        var enumerable = currentRoutees as Routee[] ?? currentRoutees.ToArray();

                        var routeesToAbandon = enumerable
                            .Drop(enumerable.Count() + requestedCapacity)
                            .ToList();

                        RemoveRoutees(routeesToAbandon, true);
                    }
                }
                finally
                {
                    _resizeInProgress.Value = false;
                }
        }
    }