Example #1
0
        public async Task AnalyticsClientTestMethod()
        {
            while (null == sessionId)
            {
                sessionId = await client.RequestRecognitionSession(modelName);
            }

            await client.UploadPhoto(new byte[] { 1, 2, 3, 4 }, sessionId);

            var recRes = await client.TryGetResults(sessionId, photoId);

            while (null == recRes)
            {
                recRes = await client.TryGetResults(sessionId, photoId);
            }
        }
        private async Task RunTaskForRecognition(RecognitionTask recognitionTask)
        {
            string recognitionSessionUID = null;
            int    pollingTimeout        = int.Parse(configuration.GetSection("AnalyticsPollingTimeout").Value);

            while (recognitionSessionUID == null)
            {
                try
                {
                    recognitionSessionUID = await analyticsClient.RequestRecognitionSession(recognitionTask.ModelName);

                    if (recognitionSessionUID != null)
                    {
                        break;
                    }
                }
                catch (Exception exception)
                {
                    logger.LogError("Exception caught: {0}, {1}", exception.Message, exception.StackTrace);
                }
                Thread.Sleep(pollingTimeout);
            }

            Photo photo = photoRepository.GetPhotoById(recognitionTask.PhotoId);

            bool isPhotoUploaded     = false;
            int  photoUploadTryCount = int.Parse(configuration.GetSection("PhotoUploadTryCount").Value);

            for (int i = 0; i < photoUploadTryCount; i++)
            {
                try
                {
                    await analyticsClient.UploadPhoto(photo.Image, recognitionSessionUID);

                    isPhotoUploaded = true;
                    break;
                }
                catch (Exception exception)
                {
                    logger.LogError("Exception caught: {0}, {1}", exception.Message, exception.StackTrace);
                    Thread.Sleep(pollingTimeout);
                }
            }
            if (!isPhotoUploaded)
            {
                queue.Enqueue(recognitionTask);
                return;
            }

            RecognitionResults recognitionResults = null;

            while (recognitionResults == null)
            {
                try
                {
                    recognitionResults = await analyticsClient.TryGetResults(recognitionSessionUID, recognitionTask.PhotoId);

                    if (recognitionResults != null)
                    {
                        break;
                    }
                }
                catch (Exception exception)
                {
                    logger.LogError("Exception caught: {0}, {1}", exception.Message, exception.StackTrace);
                }
                Thread.Sleep(pollingTimeout);
            }
            recognitionRepository.Add(recognitionResults);
        }