public QueuedIdentificationService(IdentifierSettings settings, IImageIdentifier imageIdentifier)
 {
     _imageIdentifier = imageIdentifier;
     _queue = new BlockingElidingQueue<uint, Tuple<TrackedObject, TrackedObjectFrame>>();
     _cancellationTokenSource = new CancellationTokenSource();
     for (var i = 0; i < settings.NumThreads; ++i)
     {
         Task.Run((Action)Loop, _cancellationTokenSource.Token);
     }
 }
Exemple #2
0
        public async Task <IWikiImage> GetImageAsync(IImageIdentifier imageIdentifier)
        {
            var imageAddress    = imageIdentifier.ImageUri;
            var imageAddressUri = new Uri(imageAddress);

            // Download image in the background.
            var imageTask = _networkingProvider.DownloadImageAsync(imageAddressUri);

            // Tokenize license in the meantime.
            var license = await _imageLicenseProvider.GetImageLicenseAsync(imageIdentifier);

            var image = await imageTask;

            return(_wikiMediaFactory.CreateWikiImage(imageIdentifier, license, image));
        }
        public async Task <ILicense> GetImageLicenseAsync(IImageIdentifier identifier)
        {
            // Tokenize license on a background thread.
            var copyrightLicenseTask =
                Task.Run(() => _copyrightTokenizer.GetCopyrightLicense(identifier.ImageMetadata));

            // Not all images have the Artist attribute.
            var artistName = identifier.ImageMetadata.GetValueOrDefault("Artist");

            IAttribution attribution = string.IsNullOrWhiteSpace(artistName)
                ? _copyrightFactory.CreateAttributionWithoutAuthor(identifier.Title, identifier.CreditUri)
                : _copyrightFactory.CreateAttribution(identifier.Title, artistName, identifier.CreditUri);


            var licenseRestrictions = _licenseRestrictionsTokenizer.GetLicenseRestrictions(identifier.ImageMetadata);

            var copyright = _copyrightFactory.CreateCopyright(await copyrightLicenseTask);

            // Retrieve tokenized license from background job.
            var license = _licenseFactory.CreateLicense(copyright, attribution, licenseRestrictions);

            return(license);
        }
 public ImageIdentifier(IImageIdentifier other)
     : base(other)
 {
     CopyFrom(other);
     InstanceNumber = other.InstanceNumber;
 }
Exemple #5
0
 private IIdentificationService CreateIdService(IImageIdentifier identifier)
 {
     switch (Profile.IdentifierSettings.IdServiceType)
     {
         case IdServiceType.Akka:
             return new AkkaIdentificationService(Profile.IdentifierSettings, identifier);
         case IdServiceType.Classic:
             return new QueuedIdentificationService(Profile.IdentifierSettings, identifier);
         default:
             throw new NotSupportedException(string.Format("Id Service {0} is not supported", Profile.IdentifierSettings.IdServiceType));
     }
 }
Exemple #6
0
		public ImageIdentifier(IImageIdentifier other)
			: base(other)
		{
			CopyFrom(other);
			InstanceNumber = other.InstanceNumber;
		}
Exemple #7
0
 public WikiImage(IImageIdentifier identifier, ILicense license, Image image) : base(license)
 {
     Identifier = identifier;
     Image      = image;
 }
 public IWikiImage CreateWikiImage(IImageIdentifier identifier, ILicense license, Image image)
 {
     return(new WikiImage(identifier, license, image));
 }