37 private int maximumEntries = 10_000;
38 private long maximumEntryBytes = 256L * 1024 * 1024;
39 private long maximumTotalBytes = 2L * 1024 * 1024 * 1024;
40 private double maximumCompressionRatio = 200;
41 private long maximumCollectionBytes = 512L * 1024 * 1024;
58 get => maximumEntries;
59 init => maximumEntries = RequirePositive(value, nameof(
MaximumEntries));
67 get => maximumEntryBytes;
77 get => maximumTotalBytes;
90 get => maximumCompressionRatio;
93 if (!
double.IsFinite(value) || value <= 0)
95 throw new ArgumentOutOfRangeException(nameof(
MaximumCompressionRatio), value,
"The maximum compression ratio must be finite and positive.");
98 maximumCompressionRatio = value;
108 get => maximumCollectionBytes;
112 internal void Validate()
114 _ = RequirePositive(MaximumEntries, nameof(MaximumEntries));
115 _ = RequirePositive(MaximumEntryBytes, nameof(MaximumEntryBytes));
116 _ = RequirePositive(MaximumTotalBytes, nameof(MaximumTotalBytes));
117 _ = RequirePositive(MaximumCollectionBytes, nameof(MaximumCollectionBytes));
118 if (!
double.IsFinite(MaximumCompressionRatio) || MaximumCompressionRatio <= 0)
120 throw new ArgumentOutOfRangeException(nameof(MaximumCompressionRatio), MaximumCompressionRatio,
"The maximum compression ratio must be finite and positive.");
124 private static int RequirePositive(
int value,
string parameterName)
128 throw new ArgumentOutOfRangeException(parameterName, value,
"The limit must be positive.");
134 private static long RequirePositive(
long value,
string parameterName)
138 throw new ArgumentOutOfRangeException(parameterName, value,
"The limit must be positive.");