private void ClientRecoveredCallback(IConnection connection)
        {
            _logger.Info("Endpoint {0} is recovered", connection.Endpoint);

            _endpointStrategy.Permit(connection.Endpoint);
            _ip2Connection.TryAdd(connection.Endpoint, connection);
            connection.OnFailure += OnFailure;
        }
        private void ClientRecoveredCallback(IConnection connection)
        {
            _logger.Info("Endpoint {0} is recovered", connection.Endpoint);

            _endpointStrategy.Permit(connection.Endpoint);
            _ip2Connection.AddOrUpdate(connection.Endpoint,
                                       ep =>
            {
                return(new IConnection[] { connection });
            },
                                       (ep, oldconnections) =>
            {
                var newConnections = new IConnection[oldconnections.Length + 1];
                newConnections[0]  = connection;
                for (int i = 0; i < oldconnections.Length; i++)
                {
                    newConnections[i + 1] = oldconnections[i];
                }
                return(newConnections);
            });
            connection.OnFailure += OnFailure;
        }