Пример #1
0
        public static VersionedWebServiceUri Create(WebServiceUri webServiceUri, int versionBucket)
        {
            VersionedWebServiceUri versionedWebServiceUri = new VersionedWebServiceUri();

            versionedWebServiceUri.Set(webServiceUri, versionBucket);
            return(versionedWebServiceUri);
        }
        internal static void Add(EmailAddress email, WebServiceUri uri, int versionBucket)
        {
            RemoteServiceUriCache.AutoDiscoverTracer.TraceDebug <object, WebServiceUri, EmailAddress>(0L, "{0}: Adding/Updating AS URI {1} for email {2} in cache.", TraceContext.Get(), uri, email);
            string        key           = email.Address.ToLower();
            WebServiceUri webServiceUri = new WebServiceUri(uri, DateTime.UtcNow);

            lock (RemoteServiceUriCache.cacheLocker)
            {
                VersionedWebServiceUri versionedWebServiceUri = (VersionedWebServiceUri)RemoteServiceUriCache.cache[key];
                if (versionedWebServiceUri == null)
                {
                    if (500000 == RemoteServiceUriCache.cache.Count)
                    {
                        RemoteServiceUriCache.cache.RemoveAt(0);
                    }
                    versionedWebServiceUri           = VersionedWebServiceUri.Create(webServiceUri, versionBucket);
                    RemoteServiceUriCache.cache[key] = versionedWebServiceUri;
                }
                else
                {
                    versionedWebServiceUri.Set(webServiceUri, versionBucket);
                }
            }
        }