private void RollbackObjectCookies(ForwardSyncCookieType type) { ForwardSyncCookieHeader[] array = this.cookieObjects[type]; DateTime t = this.dateTimeNow.Subtract(this.rollbackTimeSpan); int num = array.Length - 1; while (num > 0 && array[num].Timestamp > t) { this.cookieSession.Delete(array[num--]); } this.cookiesUpdated = (num < array.Length - 1); if (num >= 0) { this.RollBackDivergences(type == ForwardSyncCookieType.CompanyIncremental, array[num].Timestamp); } }
public override CookieManager GetCookieManager(ForwardSyncCookieType cookieType, string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName); switch (cookieType) { case ForwardSyncCookieType.RecipientIncremental: if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled) { return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType)); } return(new MsoRecipientMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval)); case ForwardSyncCookieType.CompanyIncremental: if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled) { return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType)); } return(new MsoCompanyMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval)); default: throw new InvalidOperationException("Cookie type not supported"); } }
public static ForwardSyncCookieHeader[] LoadCookieHeaders(ITopologyConfigurationSession cookieSession, string serviceInstanceName, ForwardSyncCookieType cookieType) { ADObjectId serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName); Container container = cookieSession.Read <Container>(serviceInstanceObjectId.GetChildId("Cookies")); if (container != null) { ComparisonFilter filter = new ComparisonFilter(ComparisonOperator.Equal, ForwardSyncCookieHeaderSchema.Type, cookieType); ForwardSyncCookieHeader[] array = cookieSession.Find <ForwardSyncCookieHeader>(container.Id, QueryScope.OneLevel, filter, null, 0); Array.Sort <ForwardSyncCookieHeader>(array, (ForwardSyncCookieHeader x, ForwardSyncCookieHeader y) => DateTime.Compare(x.Timestamp, y.Timestamp)); return(array); } return(new ForwardSyncCookieHeader[0]); }
internal MsoMultiObjectCookieManager(string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval, ForwardSyncCookieType cookieType) : base(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval) { this.cookieSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 71, ".ctor", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\Sync\\CookieManager\\MsoMultiObjectCookieManager.cs"); this.cookieSession.UseConfigNC = false; this.cookieType = cookieType; this.cookieRootContainer = MsoMultiObjectCookieManager.CreateOrGetRootContainer(serviceInstanceName, this.cookieSession); ForwardSyncCookieHeader[] source = MsoMultiObjectCookieManager.LoadCookieHeaders(this.cookieSession, serviceInstanceName, this.cookieType); this.cookieHeaderList = source.ToList <ForwardSyncCookieHeader>(); }
public abstract CookieManager GetCookieManager(ForwardSyncCookieType cookieType, string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval);