Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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)));
 }