Example #1
0
        public static void Tickle(Guid mailboxGuid, Guid requestQueueMdbGuid, MoveRequestNotification operation)
        {
            MrsTracer.Service.Debug("Processing tickled mailbox: {0}, requestQueueMdbGuid: {1}, operation: {2}", new object[]
            {
                mailboxGuid,
                requestQueueMdbGuid,
                operation
            });
            if (MailboxSyncerJobs.ProcessJob(mailboxGuid, false, delegate(BaseJob job)
            {
                job.NeedToRefreshRequest = true;
            }))
            {
                return;
            }
            MRSQueue mrsqueue = MRSQueue.Get(requestQueueMdbGuid);

            switch (operation)
            {
            case MoveRequestNotification.Created:
            case MoveRequestNotification.Canceled:
                mrsqueue.Tickle(MRSQueue.ScanType.Heavy);
                return;

            case MoveRequestNotification.Updated:
            case MoveRequestNotification.SuspendResume:
                mrsqueue.Tickle(MRSQueue.ScanType.Light);
                mrsqueue.Tickle(MRSQueue.ScanType.Heavy);
                return;

            default:
                return;
            }
        }
        MoveRequestInfo IMailboxReplicationService.GetMoveRequestInfo(Guid requestGuid)
        {
            MoveRequestInfo result = new MoveRequestInfo();

            this.ForwardKnownExceptions(delegate
            {
                if (!MailboxSyncerJobs.ProcessJob(requestGuid, false, delegate(BaseJob job)
                {
                    result = job.GetMoveRequestInfo();
                }))
                {
                    MrsTracer.Service.Debug("Request {0} is not active.", new object[]
                    {
                        requestGuid
                    });
                    result.Message = MRSQueue.GetJobPickupFailureMessageForRequest(requestGuid);
                }
            }, null);
            return(result);
        }