internal virtual void SetQuota(BlockStoragePolicySuite bsps, long nsQuota, long ssQuota , StorageType type) { DirectoryWithQuotaFeature quota = GetDirectoryWithQuotaFeature(); if (quota != null) { // already has quota; so set the quota to the new values if (type != null) { quota.SetQuota(ssQuota, type); } else { quota.SetQuota(nsQuota, ssQuota); } if (!IsQuotaSet() && !IsRoot()) { RemoveFeature(quota); } } else { QuotaCounts c = ComputeQuotaUsage(bsps); DirectoryWithQuotaFeature.Builder builder = new DirectoryWithQuotaFeature.Builder ().NameSpaceQuota(nsQuota); if (type != null) { builder.TypeQuota(type, ssQuota); } else { builder.StorageSpaceQuota(ssQuota); } AddDirectoryWithQuotaFeature(builder.Build()).SetSpaceConsumed(c); } }
private DirectoryWithQuotaFeature(DirectoryWithQuotaFeature.Builder builder) { this.quota = builder.quota; this.usage = builder.usage; }