public override void ProcessMailbox(DirectoryMailbox mailbox, IAnchorRunspaceProxy runspace)
        {
            DirectoryDatabase directoryDatabase = (DirectoryDatabase)mailbox.Parent;
            IMailboxPolicy    violatedPolicy    = this.GetViolatedPolicy(mailbox, directoryDatabase);

            if (violatedPolicy == null)
            {
                return;
            }
            MoveInfo info = this.getMoveInfo.GetInfo(mailbox, runspace);

            ProvisioningConstraintFixStateLog.Write(mailbox, directoryDatabase, info);
            switch (info.Status)
            {
            case MoveStatus.MoveExistsNotInProgress:
                violatedPolicy.HandleExistingButNotInProgressMove(mailbox, directoryDatabase);
                return;

            case MoveStatus.MoveExistsInProgress:
                break;

            case MoveStatus.MoveDoesNotExist:
                this.InjectMoveRequest(mailbox, violatedPolicy);
                break;

            default:
                return;
            }
        }
Exemplo n.º 2
0
        public MoveInfo GetInfo(DirectoryMailbox mailbox, IAnchorRunspaceProxy runspace)
        {
            GetMoveRequestStatistics getMoveRequestStatistics = new GetMoveRequestStatistics(mailbox, this.logger, this.cmdletPool);

            getMoveRequestStatistics.Process();
            if (getMoveRequestStatistics.Result == null)
            {
                return(new MoveInfo(MoveStatus.MoveDoesNotExist, Guid.Empty));
            }
            MoveStatus status;

            if (getMoveRequestStatistics.Result.Status == RequestStatus.InProgress || getMoveRequestStatistics.Result.Status == RequestStatus.Queued)
            {
                status = MoveStatus.MoveExistsInProgress;
            }
            else
            {
                status = MoveStatus.MoveExistsNotInProgress;
            }
            return(new MoveInfo(status, getMoveRequestStatistics.Result.RequestGuid));
        }
Exemplo n.º 3
0
 public abstract void ProcessMailbox(DirectoryMailbox mailbox, IAnchorRunspaceProxy runspace);
Exemplo n.º 4
0
 public override void ProcessMailbox(DirectoryMailbox mailbox, IAnchorRunspaceProxy runspace)
 {
     mailbox.EmitLogEntry(this.logCollector);
 }
Exemplo n.º 5
0
 public void ReturnRunspace(IAnchorRunspaceProxy runspace)
 {
     Interlocked.Decrement(ref this.checkedOutRunspaceCount);
     this.runspaces.Enqueue(runspace);
 }
Exemplo n.º 6
0
 public RunspaceReservation(CmdletExecutionPool pool, IAnchorRunspaceProxy runspace)
 {
     this.Runspace        = runspace;
     this.originatingPool = pool;
 }