Beispiel #1
0
        /// <summary>
        ///     Check if reserve count is inside limit.
        /// </summary>
        public override BoolResult IsInsideLimit(long limit, long reserveCount)
        {
            var vi        = _fileSystem.GetVolumeInfo(_rootPath);
            var freeSpace = Math.Max(vi.FreeSpace - reserveCount, 0);

            // Without casting to double, freeSpacePercent will always be 0 because freeSpace <= vi.Size.
            var freeSpacePercent = 100.0 * ((double)freeSpace / vi.Size);

            if (freeSpacePercent < limit)
            {
                return
                    (new BoolResult(
                         $"Exceeds {limit}% when adding {reserveCount} bytes. Configuration: [Rule={DiskFreePercentRuleName} {_quota}]"));
            }

            return(BoolResult.Success);
        }