Exemplo n.º 1
0
        public void Execute()
        {
            List <MailboxAssociation> list = new List <MailboxAssociation>(this.ItemLocators.Length);

            foreach (IMailboxLocator mailboxLocator in this.ItemLocators)
            {
                MailboxAssociation mailboxAssociation = this.LoadAssociation(mailboxLocator);
                if (this.UpdateAssociation(mailboxAssociation))
                {
                    this.SaveAssociation(mailboxAssociation);
                    list.Add(mailboxAssociation);
                    UpdateAssociationCommand.Tracer.TraceDebug <UserMailboxLocator>((long)this.GetHashCode(), "Saved association for user {0}", mailboxAssociation.User);
                }
                else if (mailboxAssociation.IsOutOfSync(this.MasterAdaptor.MasterLocator.IdentityHash))
                {
                    list.Add(mailboxAssociation);
                    UpdateAssociationCommand.Tracer.TraceDebug <UserMailboxLocator>((long)this.GetHashCode(), "Ignored saving association for user {0}, but association is out of sync, so replication will be attempted.", mailboxAssociation.User);
                }
                else
                {
                    UpdateAssociationCommand.Tracer.TraceDebug <UserMailboxLocator>((long)this.GetHashCode(), "Ignored saving association for user {0}", mailboxAssociation.User);
                }
            }
            IAssociationReplicator associationReplicator = this.GetAssociationReplicator();

            if (list.Count > 0 && associationReplicator != null)
            {
                associationReplicator.ReplicateAssociation(this.MasterAdaptor, list.ToArray());
            }
            this.OnPostExecute();
        }
 private bool ReplicateSingleAssociation(IAssociationReplicator replicator, IAssociationAdaptor masterAdaptor, MailboxAssociation association)
 {
     QueuedInProcessAssociationReplicator.Tracer.TraceDebug <IAssociationAdaptor, MailboxAssociation>((long)this.GetHashCode(), "QueuedInProcessAssociationReplicator.ReplicateSingleAssociation: MasterAdaptor={0}, Association={1}.", masterAdaptor, association);
     return(replicator.ReplicateAssociation(masterAdaptor, new MailboxAssociation[]
     {
         association
     }));
 }