private void SetEnumerateLinksParams(long linkPageStart, long linkPageEnd, int linkRangeStart, int objectsInLinkPage, TenantFullSyncState expectedState) { ExTraceGlobals.TenantFullSyncTracer.TraceDebug((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken.SetEnumerateLinksParams entering"); ExTraceGlobals.TenantFullSyncTracer.TraceDebug <int>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken.SetEnumerateLinksParams objectsInLinkPage = {0}", objectsInLinkPage); if (objectsInLinkPage == 0) { ExTraceGlobals.TenantFullSyncTracer.TraceError((long)this.TenantExternalDirectoryId.GetHashCode(), "objectsInLinkPage != 0"); throw new ArgumentOutOfRangeException("objectsInLinkPage"); } ExTraceGlobals.TenantFullSyncTracer.TraceDebug <string, string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken.SetEnumerateLinksParams this.State = {0}, expectedState = {1}", this.State.ToString(), expectedState.ToString()); if (this.State != expectedState) { ExTraceGlobals.TenantFullSyncTracer.TraceError((long)this.TenantExternalDirectoryId.GetHashCode(), "this.State != expectedState"); throw new InvalidOperationException("State"); } ExTraceGlobals.TenantFullSyncTracer.TraceDebug <long, long>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken.SetEnumerateLinksParams linkPageStart = {0}, linkPageEnd = {1}", linkPageStart, linkPageEnd); if (linkPageStart > linkPageEnd) { ExTraceGlobals.TenantFullSyncTracer.TraceError((long)this.TenantExternalDirectoryId.GetHashCode(), "linkPageStart > linkPageEnd"); throw new ArgumentOutOfRangeException("linkPageStart"); } if ((long)objectsInLinkPage > linkPageEnd - linkPageStart + 1L) { ExTraceGlobals.TenantFullSyncTracer.TraceError((long)this.TenantExternalDirectoryId.GetHashCode(), "objectsInLinkPage > (linkPageEnd - linkPageStart + 1)"); throw new ArgumentOutOfRangeException("linkPageEnd"); } this.LinkPageStart = linkPageStart; this.LinkPageEnd = linkPageEnd; this.LinkRangeStart = linkRangeStart; this.ObjectsInLinkPage = objectsInLinkPage; }
protected TenantFullSyncPageToken(byte[] tokenBytes) { Exception ex = null; try { using (BackSyncCookieReader backSyncCookieReader = BackSyncCookieReader.Create(tokenBytes, typeof(TenantFullSyncPageToken))) { this.Version = (int)backSyncCookieReader.GetNextAttributeValue(); this.ServiceInstanceId = new ServiceInstanceId((string)backSyncCookieReader.GetNextAttributeValue()); this.Timestamp = DateTime.FromBinary((long)backSyncCookieReader.GetNextAttributeValue()); this.LastReadFailureStartTime = DateTime.FromBinary((long)backSyncCookieReader.GetNextAttributeValue()); this.InvocationId = (Guid)backSyncCookieReader.GetNextAttributeValue(); this.TenantExternalDirectoryId = (Guid)backSyncCookieReader.GetNextAttributeValue(); this.TenantObjectGuid = (Guid)backSyncCookieReader.GetNextAttributeValue(); this.State = (TenantFullSyncState)backSyncCookieReader.GetNextAttributeValue(); this.ObjectUpdateSequenceNumber = (long)backSyncCookieReader.GetNextAttributeValue(); this.TombstoneUpdateSequenceNumber = (long)backSyncCookieReader.GetNextAttributeValue(); byte[] array = (byte[])backSyncCookieReader.GetNextAttributeValue(); if (array != null) { this.PendingWatermarks = WatermarkMap.Parse(array); } this.PendingWatermarksInvocationId = (Guid)backSyncCookieReader.GetNextAttributeValue(); byte[] array2 = (byte[])backSyncCookieReader.GetNextAttributeValue(); if (array2 != null) { this.Watermarks = WatermarkMap.Parse(array2); } this.WatermarksInvocationId = (Guid)backSyncCookieReader.GetNextAttributeValue(); this.LinkPageStart = (long)backSyncCookieReader.GetNextAttributeValue(); this.LinkPageEnd = (long)backSyncCookieReader.GetNextAttributeValue(); this.LinkRangeStart = (int)backSyncCookieReader.GetNextAttributeValue(); this.ObjectsInLinkPage = (int)backSyncCookieReader.GetNextAttributeValue(); string[] array3 = (string[])backSyncCookieReader.GetNextAttributeValue(); this.ErrorObjectsAndFailureCounts = ((array3 != null) ? BackSyncCookie.ParseErrorObjectsAndFailureCounts(array3) : new Dictionary <string, int>()); this.SequenceStartTimestamp = DateTime.FromBinary((long)backSyncCookieReader.GetNextAttributeValue()); this.SequenceId = (Guid)backSyncCookieReader.GetNextAttributeValue(); byte[] array4 = (byte[])backSyncCookieReader.GetNextAttributeValue(); if (array4 != null) { this.TenantScopedBackSyncCookie = BackSyncCookie.Parse(array4); this.InvocationId = this.TenantScopedBackSyncCookie.InvocationId; } this.UseContainerizedUsnChangedIndex = (bool)backSyncCookieReader.GetNextAttributeValue(); this.SoftDeletedObjectUpdateSequenceNumber = (long)backSyncCookieReader.GetNextAttributeValue(); this.PreviousState = (TenantFullSyncState)backSyncCookieReader.GetNextAttributeValue(); } } catch (ArgumentException ex2) { ExTraceGlobals.TenantFullSyncTracer.TraceError <string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken ArgumentException {0}", ex2.ToString()); ex = ex2; } catch (IOException ex3) { ExTraceGlobals.TenantFullSyncTracer.TraceError <string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken IOException {0}", ex3.ToString()); ex = ex3; } catch (FormatException ex4) { ExTraceGlobals.TenantFullSyncTracer.TraceError <string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken FormatException {0}", ex4.ToString()); ex = ex4; } catch (InvalidCookieException ex5) { ExTraceGlobals.TenantFullSyncTracer.TraceError <string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken InvalidCookieException {0}", ex5.ToString()); ex = ex5; } if (ex != null) { ExTraceGlobals.TenantFullSyncTracer.TraceError <string>((long)this.TenantExternalDirectoryId.GetHashCode(), "TenantFullSyncPageToken throw InvalidCookieException {0}", ex.ToString()); throw new InvalidCookieException(ex); } }