コード例 #1
0
        public RAMStorage(int numberOfHashTables, IModelReferenceProvider trackReferenceProvider)
        {
            this.trackReferenceProvider     = trackReferenceProvider;
            subFingerprintReferenceProvider = new UIntModelReferenceProvider();
            spectralReferenceProvider       = new UIntModelReferenceProvider();

            Initialize(numberOfHashTables);
        }
コード例 #2
0
        private InMemoryModelService(ITrackDao trackDao, ISubFingerprintDao subFingerprintDao, ISpectralImageDao spectralImageDao, IRAMStorage ramStorage)
        {
            this.ramStorage = ramStorage;
            Id                = "in-memory-model-service";
            TrackDao          = trackDao;
            SubFingerprintDao = subFingerprintDao;
            SpectralImageDao  = spectralImageDao;

            IModelReference?lastTrackReference = null;
            uint            maxTrackId         = 0;

            if (ramStorage.Tracks.Any())
            {
                (lastTrackReference, maxTrackId) = ramStorage.Tracks.Keys
                                                   .Select(_ => (_, _.Get <uint>()))
                                                   .OrderByDescending(_ => _.Item2)
                                                   .First();
            }

            uint maxSubFingerprintId = 0;

            if (lastTrackReference != null)
            {
                maxSubFingerprintId = ramStorage
                                      .ReadSubFingerprintByTrackReference(lastTrackReference)
                                      .Max(_ => _.SubFingerprintReference.Get <uint>());
            }

            modelReferenceTracker = new UIntModelReferenceTracker(maxTrackId, maxSubFingerprintId);

            uint maxSpectralImageId = 0;

            if (lastTrackReference != null)
            {
                var spectralImages = ramStorage.GetSpectralImagesByTrackReference(lastTrackReference).ToList();
                if (spectralImages.Any())
                {
                    maxSpectralImageId = spectralImages.Max(_ => _.SpectralImageReference.Get <uint>());
                }
            }

            spectralReferenceProvider = new UIntModelReferenceProvider(maxSpectralImageId);
        }