public override void SetCalendarProcessingSteps(CalendarProcessingSteps stepComplete) { this.CheckDisposed("SetCalendarProcessingSteps"); EnumValidator.ThrowIfInvalid <CalendarProcessingSteps>(stepComplete, "stepComplete"); CalendarProcessingSteps?valueAsNullable = base.GetValueAsNullable <CalendarProcessingSteps>(InternalSchema.CalendarProcessingSteps); CalendarProcessingSteps calendarProcessingSteps = stepComplete; if (valueAsNullable != null) { if ((valueAsNullable.Value & stepComplete) == stepComplete) { return; } calendarProcessingSteps = (valueAsNullable.Value | stepComplete); } base.LocationIdentifierHelperInstance.SetLocationIdentifier(60021U, LastChangeAction.SetCalendarProcessingSteps); this[InternalSchema.CalendarProcessingSteps] = calendarProcessingSteps; }
// Token: 0x0600079D RID: 1949 RVA: 0x00036558 File Offset: 0x00034758 private void ProcessMeetingResponse(MailboxSession itemStore, MeetingResponse mtgMessage, ref CalendarItemBase originalCalItem, string internetMessageId) { try { if (!mtgMessage.IsRepairUpdateMessage && originalCalItem != null && !originalCalItem.ResponseRequested) { CalendarProcessing.ProcessingResponseTracer.TraceDebug <object, string>((long)mtgMessage.GetHashCode(), "{0}: Skipping processing the MeetingResponse since the organizer has not requested a response: {1}", TraceContext.Get(), internetMessageId); CalendarProcessingSteps calendarProcessingSteps = CalendarProcessingSteps.PropsCheck | CalendarProcessingSteps.LookedForOutOfDate | CalendarProcessingSteps.UpdatedCalItem; mtgMessage.SetCalendarProcessingSteps(calendarProcessingSteps); } else if (mtgMessage.TryUpdateCalendarItem(ref originalCalItem, false)) { mtgMessage.Load(); try { itemStore.COWSettings.TemporaryDisableHold = true; ConflictResolutionResult conflictResolutionResult = originalCalItem.Save(SaveMode.ResolveConflicts); originalCalItem.Load(); if (conflictResolutionResult.SaveStatus == SaveResult.IrresolvableConflict) { throw new SaveConflictException(ServerStrings.ExSaveFailedBecauseOfConflicts(originalCalItem.Id), conflictResolutionResult); } } finally { itemStore.COWSettings.TemporaryDisableHold = false; } } CalendarAssistantPerformanceCounters.MeetingResponses.Increment(); CalendarProcessing.TracerPfd.TracePfd <int, object, string>((long)mtgMessage.GetHashCode(), "PFD IWC {0} {1}:completed Processing Meeting Response for {2}", 20631, TraceContext.Get(), internetMessageId); } catch (ObjectNotFoundException innerException) { throw new TransientException(Strings.descTransientErrorInResponse, innerException); } }
private bool TryUpdateCalendarItemInternal(ref CalendarItemBase originalCalendarItem, bool shouldThrow, bool canUpdatePrincipalCalendar) { this.CheckDisposed("MeetingRequest::TryUpdateCalendarItem"); bool flag = originalCalendarItem == null; CalendarProcessingSteps calendarProcessingSteps = CalendarProcessingSteps.None; ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.TryUpdateCalendarItemInternal: GOID={0}", this.GlobalObjectId); base.CheckPreConditionForDelegatedMeeting(canUpdatePrincipalCalendar); if (originalCalendarItem != this.externalCorrelatedCalendarItem) { throw new CalendarProcessingException(ServerStrings.ExInvalidCallToTryUpdateCalendarItem); } if (!this.CheckPreConditions(originalCalendarItem, shouldThrow, canUpdatePrincipalCalendar)) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.TryUpdateCalendarItemInternal: GOID={0}; failed pre-conditions", this.GlobalObjectId); return(false); } if (originalCalendarItem != null) { originalCalendarItem.IsCorrelated = false; } calendarProcessingSteps |= CalendarProcessingSteps.PropsCheck; DelegateRuleType?delegateRuleType; if (MeetingMessage.TryGetDelegateRuleTypeFromSession(base.Session as MailboxSession, out delegateRuleType)) { if (delegateRuleType == DelegateRuleType.ForwardAndSetAsInformationalUpdate) { ExTraceGlobals.MeetingMessageTracer.Information((long)this.GetHashCode(), "Storage.MeetingMessage.TryUpdateCalendarItemInternal: Setting PrincipalWantsCopy on meetingmessage."); MeetingMessageType valueOrDefault = base.GetValueOrDefault <MeetingMessageType>(InternalSchema.MeetingRequestType, MeetingMessageType.NewMeetingRequest); base.LocationIdentifierHelperInstance.SetLocationIdentifier(53365U); this[InternalSchema.OriginalMeetingType] = valueOrDefault; this[InternalSchema.MeetingRequestType] = MeetingMessageType.PrincipalWantsCopy; } calendarProcessingSteps |= CalendarProcessingSteps.PrincipalWantsCopyChecked; } int num = flag ? 1 : this.CompareToCalendarItem(originalCalendarItem); calendarProcessingSteps |= CalendarProcessingSteps.LookedForOutOfDate; if ((!base.CalendarProcessed && num == 0) || num > 0) { base.LocationIdentifierHelperInstance.SetLocationIdentifier(57461U, LastChangeAction.UpdateCalendarItem); this.UpdateCalendarItemInternal(ref originalCalendarItem); base.CalendarProcessed = true; if (originalCalendarItem != null) { originalCalendarItem.LocationIdentifierHelperInstance.SetLocationIdentifier(32885U, LastChangeAction.UpdateCalendarItem); } MeetingMessageInstance.SetVersionInfo(originalCalendarItem); calendarProcessingSteps |= CalendarProcessingSteps.UpdatedCalItem; } else { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, bool, int>((long)this.GetHashCode(), "Storage.MeetingMessage.TryUpdateCalendarItemInternal: GOID={0}; NOOP: calendarprocessed = {1}, originalCalendarItem={2}", this.GlobalObjectId, base.CalendarProcessed, (originalCalendarItem == null) ? -1 : originalCalendarItem.GetHashCode()); } if (flag && originalCalendarItem != null) { this.externalCorrelatedCalendarItem = originalCalendarItem; calendarProcessingSteps |= CalendarProcessingSteps.CreatedOnPrincipal; } if (originalCalendarItem != null) { originalCalendarItem.CharsetDetector.DetectionOptions = base.CharsetDetector.DetectionOptions; } this.SetCalendarProcessingSteps(calendarProcessingSteps); return(true); }
public override CalendarItemBase PreProcess(bool createNewItem, bool processExternal, int defaultReminderMinutes) { this.CheckDisposed("PreProcess"); base.LocationIdentifierHelperInstance.SetLocationIdentifier(44661U, LastChangeAction.PreProcessMeetingMessage); bool canUpdatePrincipalCalendar = true; CalendarItemBase calendarItemBase = null; bool flag = false; if (base.GetValueOrDefault <MeetingMessageType>(InternalSchema.MeetingRequestType) == MeetingMessageType.Outdated) { return(null); } try { calendarItemBase = this.GetCorrelatedItem(); if (base.IsOutOfDate(calendarItemBase)) { base.MarkAsOutOfDate(); base.LocationIdentifierHelperInstance.SetLocationIdentifier(59381U, LastChangeAction.MeetingMessageOutdated); return(null); } if (base.SkipMessage(processExternal, calendarItemBase)) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId, bool, bool>((long)this.GetHashCode(), "Storage.MeetingMessage.PreProcess: GOID={0}. Skipping meeting message processing. (ProcessExternal: {1}; IsRepairUpdateMessage: {2})", this.GlobalObjectId, processExternal, base.IsRepairUpdateMessage); return(null); } CalendarProcessingSteps valueOrDefault = base.GetValueOrDefault <CalendarProcessingSteps>(InternalSchema.CalendarProcessingSteps); bool flag2 = (valueOrDefault & CalendarProcessingSteps.CreatedOnPrincipal) == CalendarProcessingSteps.CreatedOnPrincipal; bool flag3 = (valueOrDefault & CalendarProcessingSteps.UpdatedCalItem) == CalendarProcessingSteps.UpdatedCalItem; flag = (flag2 || flag3); if (flag) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.PreProcess: GOID={0}. Skipping meeting message processing because it was already created.", this.GlobalObjectId); } else if (createNewItem || calendarItemBase != null) { MeetingRequest meetingRequest = this as MeetingRequest; if (meetingRequest != null) { flag = meetingRequest.TryUpdateCalendarItem(ref calendarItemBase, defaultReminderMinutes, canUpdatePrincipalCalendar); } else { MeetingCancellation meetingCancellation = this as MeetingCancellation; if (meetingCancellation != null) { flag = meetingCancellation.TryUpdateCalendarItem(ref calendarItemBase, canUpdatePrincipalCalendar); } } } else { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.PreProcess: GOID={0}. Skipping new meeting request.", this.GlobalObjectId); } } finally { if (!flag && calendarItemBase != null) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.PreProcess: GOID={0}. Disposing calendar item; preconditions failed.", this.GlobalObjectId); calendarItemBase.Dispose(); calendarItemBase = null; } } return(calendarItemBase); }
public virtual void SetCalendarProcessingSteps(CalendarProcessingSteps stepComplete) { throw new NotSupportedException(); }