Exemplo n.º 1
0
        public override DateTime?GetMostRecentCookieTimestamp()
        {
            ForwardSyncCookie forwardSyncCookie = this.ReadMostRecentCookie();

            if (forwardSyncCookie != null)
            {
                return(new DateTime?(forwardSyncCookie.Timestamp));
            }
            return(null);
        }
Exemplo n.º 2
0
        public override byte[] ReadCookie()
        {
            ForwardSyncCookie forwardSyncCookie = this.ReadMostRecentCookie();

            if (forwardSyncCookie == null)
            {
                return(null);
            }
            return(forwardSyncCookie.Data);
        }
Exemplo n.º 3
0
        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]);
        }
Exemplo n.º 4
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);
                }
            }
        }
Exemplo n.º 5
0
        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);
                }
            }
        }