public async void QueryCineastAndProcess(SimilarityQuery query, bool camera) { bool f = false; var res = await Task.Run(async() => { var results = await Task.Run(async() => await CineastWrapper.ExecuteQuery(query, 100, 100)); Debug.Log("Results received. Fetching objectdata"); await ObjectRegistry.Initialize(false); // Works due to collection being less than 100 and 100 are prefetched Debug.Log("Objectdata Fetched"); await ObjectRegistry.BatchFetchObjectMetadata(ObjectRegistry.Objects); Debug.Log("Metadata fetched"); Debug.Log("Fetched resutls: " + results.results.Count); f = true; return(results); }); Debug.Log("Handling Result"); while (f == false) { Debug.Log("waiting"); } Debug.Log("finished"); HandleCineastResult(ObjectRegistry.Objects, camera); // TODO more sophisticated }
public async void QueryCineastAndProcess(SimilarityQuery query) { var res = await Task.Run(async() => { var results = await Task.Run(async() => await CineastWrapper.ExecuteQuery(query, 100, 100)); Debug.Log("Results received. Fetching objectdata"); await ObjectRegistry.Initialize(false); // Works due to collection being less than 100 and 100 are prefetched Debug.Log("Objectdata Fetched"); await ObjectRegistry.BatchFetchObjectMetadata(ObjectRegistry.Objects); Debug.Log("Metadata fetched"); return(results); }); HandleCineastResult(ObjectRegistry.Objects); // TODO more sophisticated }
public async Task PerformAsync(List <string> categories, string modelJson, Callback callback, Handler handler) { var testModelData = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(modelJson)); var terms = new List <QueryTerm> { new QueryTerm(categories, QueryTerm.TypeEnum.MODEL3D, "data:application/3d-json," + testModelData) }; var components = new List <QueryComponent> { new QueryComponent(terms) }; var conf = new QueryConfig(); var query = new SimilarityQuery(components, conf); if (handler != null) { query = handler.OnStartQuery(query); } var response = await Api.ApiV1FindSegmentsSimilarPostAsync(query); if (handler != null) { response = handler.OnFinishQuery(response); } var segmentQueries = new List <Task <MediaSegmentQueryResult> >(); var segmentQueryContext = new Dictionary <Task <MediaSegmentQueryResult>, Tuple <SimilarityQueryResult, StringDoublePair> >(); foreach (var similarityResult in response.Results) { foreach (var similarityContent in similarityResult.Content) { var segmentsIdList = new IdList(new List <string>() { similarityContent.Key }); if (handler != null) { segmentsIdList = handler.OnStartSegmentsByIdQuery(similarityResult, similarityContent, segmentsIdList); } var segmentQuery = Api.ApiV1FindSegmentsByIdPostAsync(segmentsIdList); segmentQueries.Add(segmentQuery); segmentQueryContext[segmentQuery] = Tuple.Create(similarityResult, similarityContent); } } while (segmentQueries.Count > 0) { var task = await Task.WhenAny(segmentQueries); var segmentsResult = await task; segmentQueries.Remove(task); var context = segmentQueryContext[task]; var similarityResult = context.Item1; var similarityContent = context.Item2; if (handler != null) { segmentsResult = handler.OnFinishSegmentsByIdQuery(similarityResult, similarityContent, segmentsResult); } foreach (var segmentContent in segmentsResult.Content) { if (handler != null) { handler.OnStartObjectByIdQuery(similarityResult, similarityContent, segmentContent); } var mediaObjectResult = await Api.ApiV1FindObjectByAttributeValueGetAsync("id", segmentContent.ObjectId); if (handler != null) { mediaObjectResult = handler.OnFinishObjectByIdQuery(similarityResult, similarityContent, segmentContent, mediaObjectResult); } if (callback != null) { foreach (var mediaObjectContent in mediaObjectResult.Content) { string objModel; using (var stream = await ObjectDownloader.RequestContentAsync(Api, mediaObjectContent, segmentContent)) using (var reader = new StreamReader(stream)) { objModel = reader.ReadToEnd(); } callback.OnFullQueryResult(similarityContent, segmentContent, mediaObjectContent, objModel); //Just one result expected break; } } //Just one result expected break; } } }
public SimilarityQuery OnStartQuery(SimilarityQuery query) { Console.WriteLine("Start 3D Similarity Query Request"); return(query); }
public SimilarityQuery OnStartQuery(SimilarityQuery query) { Debug.Log("Start 3D Similarity Query Request"); return(handler != null?handler.OnStartQuery(query) : query); }