internal PersistedBandDefinition(Band band, bool isEnabled = false) { AnchorUtil.ThrowOnNullArgument(band, "band"); this.BandProfile = band.Profile; this.MaxSize = band.MaxSize.ToBytes(); this.MinSize = band.MinSize.ToBytes(); this.IsEnabled = isEnabled; this.IncludeOnlyPhysicalMailboxes = band.IncludeOnlyPhysicalMailboxes; this.MinLastLogonAgeTicks = PersistedBandDefinition.GetPersistableLogonAge(band.MinLastLogonAge); this.MaxLastLogonAgeTicks = PersistedBandDefinition.GetPersistableLogonAge(band.MaxLastLogonAge); this.WeightFactor = band.MailboxSizeWeightFactor; }
private void CheckNewBandDoesntConflict(PersistedBandDefinition incomingBand, IEnumerable <PersistedBandDefinition> existingBands) { Band incoming = incomingBand.ToBand(); Band band2 = (from persistedBand in existingBands select persistedBand.ToBand()).FirstOrDefault((Band band) => band.IsOverlap(incoming)); if (band2 != null) { this.logger.LogError(null, "Band {0} conflicts with defined band {1}.", new object[] { incoming, band2 }); throw new OverlappingBandDefinitionException(incoming.ToString(), band2.ToString()); } }
public PersistedBandDefinition PersistBand(Band band, bool enabled) { base.CheckDisposed(); PersistedBandDefinition persistedBandDefinition = new PersistedBandDefinition(band, enabled); List <PersistedBandDefinition> source = this.GetPersistedBands().ToList <PersistedBandDefinition>(); if (enabled) { if (source.Any((PersistedBandDefinition pbd) => pbd.IsEnabled)) { this.CheckNewBandDoesntConflict(persistedBandDefinition, from pb in source where pb.IsEnabled select pb); } } new AnchorXmlSerializableObject <PersistedBandDefinition>(this.loadBalanceAnchorContext) { PersistedObject = persistedBandDefinition }.CreateInStore(this.anchorDataProvider, null); return(persistedBandDefinition); }
internal Band ToBand() { return(new Band(this.BandProfile, ByteQuantifiedSize.FromBytes(this.MinSize), ByteQuantifiedSize.FromBytes(this.MaxSize), this.WeightFactor, this.IncludeOnlyPhysicalMailboxes, PersistedBandDefinition.FromPersistableLogonAge(this.MinLastLogonAgeTicks), PersistedBandDefinition.FromPersistableLogonAge(this.MaxLastLogonAgeTicks))); }