Ejemplo n.º 1
0
        internal static WorkingSetFlags GetWorkingSetFlags(WorkingSetSource workingSetSource)
        {
            WorkingSetFlags result;

            switch (workingSetSource)
            {
            case WorkingSetSource.None:
                result = WorkingSetFlags.Exchange;
                break;

            case WorkingSetSource.SPO:
                result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.SPO);
                break;

            case WorkingSetSource.Yammer:
                result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.Yammer);
                break;

            case WorkingSetSource.O365:
                result = WorkingSetFlags.WorkingSet;
                break;

            case WorkingSetSource.SubscribedGroups:
                result = (WorkingSetFlags.Exchange | WorkingSetFlags.WorkingSet | WorkingSetFlags.Subscribed | WorkingSetFlags.Groups);
                break;

            case WorkingSetSource.PinnedGroups:
                result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.Pinned | WorkingSetFlags.Groups);
                break;

            default:
                throw new FormatException(string.Format("Invalid Working Set source : {0}", workingSetSource));
            }
            return(result);
        }
Ejemplo n.º 2
0
        public override void Process(StoreDriverDeliveryEventArgsImpl argsImpl, Action action, int traceId)
        {
            AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: entering");
            MailboxSession mailboxSession                    = argsImpl.MailboxSession;
            string         workingSetSourcePartition         = WorkingSetUtils.GetWorkingSetSourcePartition(action.Item);
            string         workingSetSourcePartitionInternal = WorkingSetUtils.GetWorkingSetSourcePartitionInternal(action.Item);
            StoreObjectId  workingSetPartitionFolderId       = WorkingSetUtils.GetWorkingSetPartitionFolderId(mailboxSession, workingSetSourcePartition, workingSetSourcePartitionInternal);

            using (Item item = ((ExchangeItem)action.Item).Item)
            {
                using (MessageItem messageItem = MessageItem.Create(mailboxSession, workingSetPartitionFolderId))
                {
                    messageItem.ClassName = item.ClassName;
                    Body.CopyBody(item.Body, messageItem.Body, CultureInfo.InvariantCulture, false, false);
                    Item.CopyItemContent(item, messageItem);
                    if (workingSetSourcePartition != null)
                    {
                        messageItem.WorkingSetSourcePartition = workingSetSourcePartition;
                    }
                    WorkingSetSource sourceSystemCode = (WorkingSetSource)action.Item.SourceSystemCode;
                    WorkingSetFlags  workingSetFlags  = WorkingSetUtils.GetWorkingSetFlags(sourceSystemCode);
                    messageItem.WorkingSetId     = action.Item.Identifier;
                    messageItem.WorkingSetSource = sourceSystemCode;
                    messageItem.WorkingSetFlags  = workingSetFlags;
                    PolicyTagHelper.SetRetentionProperties(messageItem, ExDateTime.UtcNow.AddDays(30.0), 30);
                    messageItem.AutoResponseSuppress = AutoResponseSuppress.All;
                    messageItem.Save(SaveMode.NoConflictResolutionForceSave);
                    AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: workingSetSource - {0}, workingSetFlags - {1}, workingSetSoucePartition - {2}, folder - {3}", new object[]
                    {
                        sourceSystemCode,
                        workingSetFlags,
                        workingSetSourcePartition,
                        workingSetPartitionFolderId
                    });
                }
            }
            WorkingSet.AddExchangeItem.Increment();
            WorkingSet.AddItem.Increment();
            argsImpl.MailRecipient.DsnRequested = DsnRequestedFlags.Never;
            throw new SmtpResponseException(AddExchangeItemProcessor.processedAddExchangeItemSignalMailResponse, this.actionProcessorFactory.WorkingSetAgent.Name);
        }