示例#1
0
        public async Task ExecuteAsync(CheckForExpiration command, CancellationToken cancellationToken)
        {
            var expirationQuanta = await repository.GetExpirationQuantaAsync(cancellationToken);

            var lastActive = await repository.GetServiceLastActiveAsync(cancellationToken);

            var inactivityPeriod = command.AsOfDate.Subtract(lastActive);

            if (inactivityPeriod > expirationQuanta)
            {
                string instanceName = await repository.TryGetServiceInstanceNameAsync(cancellationToken);

                string partitionId = await repository.GetPartitionIdAsync(cancellationToken);

                string serviceTypeUri = await repository.GetServiceTypeUriAsync(cancellationToken);

                await partitions.VacateInstanceAsync(partitionId, serviceTypeUri, instanceName, command.InstanceId);
            }
        }