コード例 #1
0
 public RegistrationPersistence(StorageFactory storageFactory, RegistrationKey registrationKey, int partitionSize, int packageCountThreshold, Uri contentBaseAddress)
 {
     _storage                 = new RecordingStorage(storageFactory.Create(registrationKey.ToString()));
     _registrationUri         = _storage.ResolveUri("index.json");
     _packageCountThreshold   = packageCountThreshold;
     _partitionSize           = partitionSize;
     _registrationBaseAddress = storageFactory.BaseAddress;
     _contentBaseAddress      = contentBaseAddress;
 }
コード例 #2
0
 public RegistrationPersistence(StorageFactory storageFactory, RegistrationKey registrationKey, int partitionSize, int packageCountThreshold, Uri contentBaseAddress)
 {
     _storage = new RecordingStorage(storageFactory.Create(registrationKey.ToString()));
     _registrationUri = _storage.ResolveUri("index.json");
     _packageCountThreshold = packageCountThreshold;
     _partitionSize = partitionSize;
     _registrationBaseAddress = storageFactory.BaseAddress;
     _contentBaseAddress = contentBaseAddress;
 }
コード例 #3
0
        public static async Task Process(RegistrationKey registrationKey, IDictionary <string, IGraph> newItems, StorageFactory storageFactory, Uri contentBaseAddress, int partitionSize, int packageCountThreshold)
        {
            IRegistrationPersistence registration = new RegistrationPersistence(storageFactory, registrationKey, partitionSize, packageCountThreshold);
            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> existing = await registration.Load();

            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> delta     = PromoteRegistrationKey(newItems);
            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> resulting = Apply(existing, delta);
            await registration.Save(resulting);
        }
コード例 #4
0
        public override bool Equals(object obj)
        {
            RegistrationKey rhs = obj as RegistrationKey;

            if (rhs == null)
            {
                return(false);
            }

            return(StringComparer.OrdinalIgnoreCase.Equals(Id, rhs.Id));
        }
コード例 #5
0
        public static KeyValuePair <RegistrationEntryKey, RegistrationCatalogEntry> Promote(string resourceUri, IGraph graph)
        {
            INode  subject = graph.CreateUriNode(new Uri(resourceUri));
            string version = graph.GetTriplesWithSubjectPredicate(subject, graph.CreateUriNode(Schema.Predicates.Version)).First().Object.ToString();

            RegistrationEntryKey registrationEntryKey = new RegistrationEntryKey(RegistrationKey.Promote(resourceUri, graph), version);

            RegistrationCatalogEntry registrationCatalogEntry = IsDelete(subject, graph) ? null : new RegistrationCatalogEntry(resourceUri, graph);

            return(new KeyValuePair <RegistrationEntryKey, RegistrationCatalogEntry>(registrationEntryKey, registrationCatalogEntry));
        }
コード例 #6
0
        public override bool Equals(object obj)
        {
            RegistrationKey rhs = obj as RegistrationKey;

            if (rhs == null)
            {
                return(false);
            }

            return(Id == rhs.Id);
        }
コード例 #7
0
        public override bool Equals(object obj)
        {
            RegistrationEntryKey rhs = obj as RegistrationEntryKey;

            if (rhs == null)
            {
                return(false);
            }

            return(RegistrationKey.Equals(rhs.RegistrationKey) &&
                   _normalizedVersion == rhs._normalizedVersion);
        }
コード例 #8
0
        public static async Task Process(RegistrationKey registrationKey, IDictionary<string, IGraph> newItems, StorageFactory storageFactory, Uri contentBaseAddress, int partitionSize, int packageCountThreshold, CancellationToken cancellationToken)
        {
            Trace.TraceInformation("RegistrationMaker.Process: registrationKey = {0} newItems: {1}", registrationKey, newItems.Count);

            IRegistrationPersistence registration = new RegistrationPersistence(storageFactory, registrationKey, partitionSize, packageCountThreshold, contentBaseAddress);

            IDictionary<RegistrationEntryKey, RegistrationCatalogEntry> existing = await registration.Load(cancellationToken);

            Trace.TraceInformation("RegistrationMaker.Process: existing = {0}", existing.Count);

            IDictionary<RegistrationEntryKey, RegistrationCatalogEntry> delta = PromoteRegistrationKey(newItems);

            Trace.TraceInformation("RegistrationMaker.Process: delta = {0}", delta.Count);
            
            IDictionary<RegistrationEntryKey, RegistrationCatalogEntry> resulting = Apply(existing, delta);

            Trace.TraceInformation("RegistrationMaker.Process: resulting = {0}", resulting.Count);
            
            await registration.Save(resulting, cancellationToken);
        }
コード例 #9
0
 public RegistrationPersistence(
     StorageFactory storageFactory,
     RegistrationMakerCatalogItem.PostProcessGraph postProcessGraph,
     RegistrationKey registrationKey,
     int partitionSize,
     int packageCountThreshold,
     Uri contentBaseAddress,
     Uri galleryBaseAddress,
     bool forcePackagePathProviderForIcons)
 {
     _storage                          = new RecordingStorage(storageFactory.Create(registrationKey.ToString()));
     _postProcessGraph                 = postProcessGraph;
     _registrationUri                  = _storage.ResolveUri("index.json");
     _packageCountThreshold            = packageCountThreshold;
     _partitionSize                    = partitionSize;
     _registrationBaseAddress          = storageFactory.BaseAddress;
     _contentBaseAddress               = contentBaseAddress;
     _galleryBaseAddress               = galleryBaseAddress;
     _forcePackagePathProviderForIcons = forcePackagePathProviderForIcons;
 }
コード例 #10
0
 public static async Task ProcessAsync(
     RegistrationKey registrationKey,
     IReadOnlyDictionary <string, IGraph> newItems,
     StorageFactory storageFactory,
     Uri contentBaseAddress,
     int partitionSize,
     int packageCountThreshold,
     ITelemetryService telemetryService,
     CancellationToken cancellationToken)
 {
     await ProcessAsync(
         registrationKey,
         newItems,
         (k, u, g) => true,
         storageFactory,
         contentBaseAddress,
         partitionSize,
         packageCountThreshold,
         telemetryService,
         cancellationToken);
 }
コード例 #11
0
        public static KeyValuePair <RegistrationEntryKey, RegistrationCatalogEntry> Promote(
            string resourceUri,
            IGraph graph,
            ShouldIncludeRegistrationPackage shouldInclude,
            bool isExistingItem)
        {
            INode  subject = graph.CreateUriNode(new Uri(resourceUri));
            var    triples = graph.GetTriplesWithSubjectPredicate(subject, graph.CreateUriNode(Schema.Predicates.Version));
            string version = triples.First().Object.ToString();

            var registrationEntryKey = new RegistrationEntryKey(RegistrationKey.Promote(resourceUri, graph), version);

            RegistrationCatalogEntry registrationCatalogEntry = null;

            if (!IsDelete(subject, graph) && shouldInclude(registrationEntryKey, resourceUri, graph))
            {
                registrationCatalogEntry = new RegistrationCatalogEntry(resourceUri, graph, isExistingItem);
            }

            return(new KeyValuePair <RegistrationEntryKey, RegistrationCatalogEntry>(registrationEntryKey, registrationCatalogEntry));
        }
コード例 #12
0
        public static async Task ProcessAsync(
            RegistrationKey registrationKey,
            IReadOnlyDictionary <string, IGraph> newItems,
            ShouldIncludeRegistrationPackage shouldInclude,
            StorageFactory storageFactory,
            RegistrationMakerCatalogItem.PostProcessGraph postProcessGraph,
            Uri contentBaseAddress,
            Uri galleryBaseAddress,
            int partitionSize,
            int packageCountThreshold,
            bool forcePackagePathProviderForIcons,
            ITelemetryService telemetryService,
            CancellationToken cancellationToken)
        {
            Trace.TraceInformation("RegistrationMaker.Process: registrationKey = {0} newItems: {1}", registrationKey, newItems.Count);

            IRegistrationPersistence registration = new RegistrationPersistence(storageFactory, postProcessGraph, registrationKey, partitionSize, packageCountThreshold, contentBaseAddress, galleryBaseAddress, forcePackagePathProviderForIcons);

            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> existing = await registration.Load(cancellationToken);

            Trace.TraceInformation("RegistrationMaker.Process: existing = {0}", existing.Count);

            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> delta = PromoteRegistrationKey(newItems, shouldInclude);

            Trace.TraceInformation("RegistrationMaker.Process: delta = {0}", delta.Count);
            telemetryService.TrackMetric(TelemetryConstants.RegistrationDeltaCount, (uint)delta.Count, new Dictionary <string, string>()
            {
                { TelemetryConstants.ContentBaseAddress, contentBaseAddress.AbsoluteUri },
                { TelemetryConstants.GalleryBaseAddress, galleryBaseAddress.AbsoluteUri }
            });

            IDictionary <RegistrationEntryKey, RegistrationCatalogEntry> resulting = Apply(existing, delta);

            Trace.TraceInformation("RegistrationMaker.Process: resulting = {0}", resulting.Count);
            await registration.Save(resulting, cancellationToken);
        }
コード例 #13
0
 public override string ToString()
 {
     return(RegistrationKey.ToString() + "/" + Version);
 }
コード例 #14
0
 public RegistrationEntryKey(RegistrationKey registrationKey, string version)
 {
     RegistrationKey    = registrationKey;
     Version            = version;
     _normalizedVersion = NuGetVersionUtility.NormalizeVersion(version).ToLowerInvariant();
 }