public override DateTime?GetMostRecentCookieTimestamp() { ForwardSyncCookie forwardSyncCookie = this.ReadMostRecentCookie(); if (forwardSyncCookie != null) { return(new DateTime?(forwardSyncCookie.Timestamp)); } return(null); }
public override byte[] ReadCookie() { ForwardSyncCookie forwardSyncCookie = this.ReadMostRecentCookie(); if (forwardSyncCookie == null) { return(null); } return(forwardSyncCookie.Data); }
public static void ConvertE15toE14MV(SyncServiceInstance serviceInstance, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession(); MsoMainStreamCookie cookieToAdd = null; MsoMainStreamCookie cookieToAdd2 = null; if (serviceInstance.IsMultiObjectCookieEnabled) { MsoMultiObjectCookieManager msoMultiObjectCookieManager = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.CompanyIncremental); MsoMultiObjectCookieManager msoMultiObjectCookieManager2 = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.RecipientIncremental); ForwardSyncCookie forwardSyncCookie = msoMultiObjectCookieManager.ReadMostRecentCookie(); ForwardSyncCookie forwardSyncCookie2 = msoMultiObjectCookieManager2.ReadMostRecentCookie(); if (forwardSyncCookie != null) { cookieToAdd = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie.Data, forwardSyncCookie.Timestamp, new ServerVersion(forwardSyncCookie.SyncPropertySetVersion), forwardSyncCookie.IsUpgradingSyncPropertySet); } if (forwardSyncCookie2 != null) { cookieToAdd2 = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie2.Data, forwardSyncCookie2.Timestamp, new ServerVersion(forwardSyncCookie2.SyncPropertySetVersion), forwardSyncCookie2.IsUpgradingSyncPropertySet); } } else { MsoCompanyMainStreamCookieManager msoCompanyMainStreamCookieManager = new MsoCompanyMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); MsoRecipientMainStreamCookieManager msoRecipientMainStreamCookieManager = new MsoRecipientMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); cookieToAdd = msoCompanyMainStreamCookieManager.ReadMostRecentCookie(); cookieToAdd2 = msoRecipientMainStreamCookieManager.ReadMostRecentCookie(); } ridmasterSession.UseConfigNC = true; MsoCookieConverter.E14MsoMainStreamCookieContainer[] array = ridmasterSession.Find <MsoCookieConverter.E14MsoMainStreamCookieContainer>(ridmasterSession.GetOrgContainerId().Parent, QueryScope.SubTree, null, null, 1); if (array == null || array.Length == 0) { throw new ExchangeConfigurationContainerNotFoundException(); } List <MsoMainStreamCookie> list = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncNonRecipientCookie); List <MsoMainStreamCookie> list2 = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncRecipientCookie); list = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd, list); list2 = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd2, list2); array[0].MsoForwardSyncNonRecipientCookie.Clear(); foreach (MsoMainStreamCookie msoMainStreamCookie in list) { array[0].MsoForwardSyncNonRecipientCookie.Add(msoMainStreamCookie.ToStorageCookie()); } array[0].MsoForwardSyncRecipientCookie.Clear(); foreach (MsoMainStreamCookie msoMainStreamCookie2 in list2) { array[0].MsoForwardSyncRecipientCookie.Add(msoMainStreamCookie2.ToStorageCookie()); } ridmasterSession.Save(array[0]); }
private static void FromMultiValuedCookieToMultiObjectCookie(string serviceInstanceName, IEnumerable <byte[]> multiValueCookieAttribute, MsoMultiObjectCookieManager msoMultiObjectCookieManager) { List <MsoMainStreamCookie> ordredCookieList = MsoCookieConverter.GetOrdredCookieList(serviceInstanceName, multiValueCookieAttribute); if (ordredCookieList.Count > 0) { ForwardSyncCookie forwardSyncCookie = msoMultiObjectCookieManager.ReadMostRecentCookie(); MsoMainStreamCookie msoMainStreamCookie = ordredCookieList.Last <MsoMainStreamCookie>(); if (forwardSyncCookie == null || msoMainStreamCookie.TimeStamp > forwardSyncCookie.Timestamp) { msoMultiObjectCookieManager.WriteCookie(msoMainStreamCookie.RawCookie, null, msoMainStreamCookie.TimeStamp, msoMainStreamCookie.IsSyncPropertySetUpgrading, msoMainStreamCookie.SyncPropertySetVersion, true); } } }
public override void WriteCookie(byte[] cookie, IEnumerable <string> filteredContextIds, DateTime timestamp, bool isUpgradingCookie, ServerVersion version, bool more) { if (cookie == null || cookie.Length == 0) { throw new ArgumentNullException("cookie"); } base.UpdateSyncPropertySetVersion(isUpgradingCookie, version, more); ForwardSyncCookie forwardSyncCookie = this.ReadMostRecentCookie(); bool flag = forwardSyncCookie == null || timestamp.Subtract(this.lastNewCookieTimestamp) >= this.cookieHistoryInterval; bool flag2 = false; if (flag) { if (this.cookieHeaderList.Count > this.maxCookieHistoryCount) { this.CleanupOldCookies(); } else { flag2 = (this.cookieHeaderList.Count < this.maxCookieHistoryCount); } forwardSyncCookie = new ForwardSyncCookie(); if (flag2) { string unescapedCommonName = string.Format("{0}-{1}", Enum.GetName(typeof(ForwardSyncCookieType), this.cookieType), timestamp.Ticks); forwardSyncCookie.SetId(this.cookieRootContainer.GetChildId(unescapedCommonName)); } else { forwardSyncCookie.SetId(this.cookieHeaderList.First <ForwardSyncCookieHeader>().Id); forwardSyncCookie.Name = forwardSyncCookie.Id.Name; forwardSyncCookie.m_Session = this.cookieSession; forwardSyncCookie.ResetChangeTracking(true); } forwardSyncCookie.Type = this.cookieType; forwardSyncCookie.Version = 1; } forwardSyncCookie.Timestamp = timestamp; forwardSyncCookie.Data = cookie; if (filteredContextIds != null) { forwardSyncCookie.FilteredContextIds = new MultiValuedProperty <string>(filteredContextIds); } forwardSyncCookie.IsUpgradingSyncPropertySet = base.IsSyncPropertySetUpgrading; forwardSyncCookie.SyncPropertySetVersion = base.SyncPropertySetVersion.ToInt(); this.cookieSession.Save(forwardSyncCookie); this.mostRecentCookie = forwardSyncCookie; if (flag) { ForwardSyncCookieHeader forwardSyncCookieHeader = new ForwardSyncCookieHeader { Name = forwardSyncCookie.Name, Timestamp = forwardSyncCookie.Timestamp }; forwardSyncCookieHeader.SetId(forwardSyncCookie.Id); this.cookieHeaderList.Add(forwardSyncCookieHeader); this.lastNewCookieTimestamp = timestamp; if (!flag2) { this.cookieHeaderList.RemoveAt(0); } } }