public override DatabaseSizeInfo GetDatabaseSizeInformation(DirectoryDatabase database) { DatabaseSizeInfo databaseSpaceData; using (IPhysicalDatabase physicalDatabaseConnection = this.serviceContext.ClientFactory.GetPhysicalDatabaseConnection(database)) { databaseSpaceData = physicalDatabaseConnection.GetDatabaseSpaceData(); } return(databaseSpaceData); }
public IEnumerable <NonConnectedMailbox> GetDisconnectedMailboxesForDatabase(DirectoryDatabase database) { using (IPhysicalDatabase physicalDatabase = this.clientFactory.GetPhysicalDatabaseConnection(database)) { foreach (NonConnectedMailbox disconnectedMailbox in this.GetDisconnectedMailboxesForDatabaseInternal(database, physicalDatabase)) { yield return(disconnectedMailbox); } } yield break; }
private void AddPhysicalMailboxToList(Guid mailboxGuid, Guid databaseGuid, IPhysicalDatabase physicalDatabaseConnection, List <IPhysicalMailbox> physicalMailboxes, bool isArchive) { IPhysicalMailbox physicalMailbox = null; if (physicalDatabaseConnection == null) { physicalMailbox = new VirtualPhysicalMailbox(this.clientFactory, this.GetDatabase(databaseGuid), mailboxGuid, this.logger, isArchive); } else if (physicalDatabaseConnection.DatabaseGuid == databaseGuid) { physicalMailbox = physicalDatabaseConnection.GetMailbox(mailboxGuid); } if (physicalMailbox != null) { physicalMailboxes.Add(physicalMailbox); } }
private IPhysicalMailbox LoadMailboxData() { IPhysicalMailbox result; using (OperationTracker.Create(this.logger, "Retrieving single mailbox {0} data from database {1}", new object[] { this.Guid, this.database.Identity })) { using (IPhysicalDatabase physicalDatabaseConnection = this.clientFactory.GetPhysicalDatabaseConnection(this.database)) { result = (physicalDatabaseConnection.GetMailbox(this.Guid) ?? EmptyPhysicalMailbox.Instance); } } return(result); }
public IEnumerable <DirectoryMailbox> GetMailboxesForDatabase(DirectoryDatabase database) { this.logger.LogVerbose("Getting mailboxes for database '{0}'", new object[] { database.Name }); DirectoryIdentity databaseIdentity = database.Identity; using (IPhysicalDatabase physicalDatabase = this.clientFactory.GetPhysicalDatabaseConnection(database)) { physicalDatabase.LoadMailboxes(); IOperationRetryManager retryManager = LoadBalanceOperationRetryManager.Create(this.logger); foreach (LoadBalancingMiniRecipient recipient in this.RecipientSession.FindAllUsersLinkedToDatabase(databaseIdentity.ADObjectId)) { DirectoryMailbox mailbox = null; LoadBalancingMiniRecipient miniRecipient = recipient; retryManager.TryRun(delegate { mailbox = this.GetMailboxFromMiniRecipient(miniRecipient, this.RecipientSession.GetExternalDirectoryOrganizationId(miniRecipient), physicalDatabase); mailbox.Parent = database; this.NotifyObjectLoaded(mailbox); }); if (mailbox != null) { yield return(mailbox); } } foreach (IPhysicalMailbox consumerMailbox in physicalDatabase.GetConsumerMailboxes()) { DirectoryIdentity consumerIdentity = DirectoryIdentity.CreateConsumerMailboxIdentity(consumerMailbox.Guid, physicalDatabase.DatabaseGuid, consumerMailbox.OrganizationId); yield return(new DirectoryMailbox(this, consumerIdentity, new IPhysicalMailbox[] { consumerMailbox }, DirectoryMailboxType.Consumer)); } foreach (NonConnectedMailbox disconnectedMailbox in this.GetDisconnectedMailboxesForDatabaseInternal(database, physicalDatabase)) { yield return(disconnectedMailbox); } } yield break; }
public CachedPhysicalDatabase(IPhysicalDatabase database) : base(null) { this.database = database; }
private DirectoryMailbox GetMailboxFromMiniRecipient(LoadBalancingMiniRecipient recipient, Guid organizationId, IPhysicalDatabase physicalDatabaseConnection) { List <IPhysicalMailbox> physicalMailboxes = new List <IPhysicalMailbox>(2); Guid exchangeGuid = recipient.ExchangeGuid; if (recipient.Database != null && exchangeGuid != Guid.Empty) { Guid objectGuid = recipient.Database.ObjectGuid; this.AddPhysicalMailboxToList(exchangeGuid, objectGuid, physicalDatabaseConnection, physicalMailboxes, false); } if (recipient.ArchiveGuid != Guid.Empty && recipient.ArchiveDatabase != null) { this.AddPhysicalMailboxToList(recipient.ArchiveGuid, recipient.ArchiveDatabase.ObjectGuid, physicalDatabaseConnection, physicalMailboxes, true); } DirectoryMailbox directoryMailbox; if (recipient.RecipientType == RecipientType.MailUser) { directoryMailbox = new CloudArchive(this, DirectoryIdentity.CreateMailboxIdentity(recipient.Guid, organizationId, DirectoryObjectType.CloudArchive), physicalMailboxes); } else { directoryMailbox = new DirectoryMailbox(this, DirectoryIdentity.CreateMailboxIdentity(recipient.Guid, organizationId, DirectoryObjectType.Mailbox), physicalMailboxes, DirectoryMailboxType.Organization); if (recipient.propertyBag.Contains(MiniRecipientSchema.ConfigurationXML) && recipient.ConfigXML != null) { directoryMailbox.MailboxProvisioningConstraints = recipient.ConfigXML.MailboxProvisioningConstraints; } } if (recipient.MailboxMoveFlags.HasFlag(RequestFlags.IntraOrg) && (recipient.MailboxMoveStatus == RequestStatus.Queued || recipient.MailboxMoveStatus == RequestStatus.InProgress)) { BatchName batchName = BatchName.FromString(recipient.MailboxMoveBatchName); if (batchName.IsLoadBalancingBatch) { directoryMailbox.IsBeingLoadBalanced = true; } } return(directoryMailbox); }
private IEnumerable <NonConnectedMailbox> GetDisconnectedMailboxesForDatabaseInternal(DirectoryDatabase database, IPhysicalDatabase physicalDatabase) { this.logger.LogVerbose("Getting soft deleted mailboxes for database '{0}'", new object[] { database.Name }); IOperationRetryManager retryManager = LoadBalanceOperationRetryManager.Create(this.logger); foreach (IPhysicalMailbox disconnectedMailbox in physicalDatabase.GetNonConnectedMailboxes()) { NonConnectedMailbox nonConnectedMailbox = null; IPhysicalMailbox mailbox = disconnectedMailbox; retryManager.TryRun(delegate { nonConnectedMailbox = new NonConnectedMailbox(this, DirectoryIdentity.CreateNonConnectedMailboxIdentity(mailbox.Guid, mailbox.OrganizationId), new IPhysicalMailbox[] { mailbox }); nonConnectedMailbox.Parent = database; this.NotifyObjectLoaded(nonConnectedMailbox); }); if (disconnectedMailbox != null) { yield return(nonConnectedMailbox); } } yield break; }