Ejemplo n.º 1
0
 public static async Task Main()
 {
     // download boundaries and runnables.
     var config       = SettingsManager.GetCredentials();
     var cosmosWriter = new UploadHandler(config.EndPoint, config.AuthKey, config.CosmosDatabase, config.CosmosContainer, config.StaticDataCosmosContainer);
     var tripProc     = new TripProcessorHandler(cosmosWriter);
     var tommy        = Guid.Parse("08f9752f-982d-445b-b75e-63e24f2c325c");
     await tripProc.Process("C:/users/riguy/Downloads/activity_7747876727.gpx", tommy);
 }
Ejemplo n.º 2
0
        public static async Task <Guid> RunOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context)
        {
            (var userId, var rawGpxData) = context.GetInput <(Guid, string)>();
            var parsedGpx = GpxParser.Parse(new StringReader(rawGpxData));

            // todo - also upload the file to raw storage!
            // todo - and record the raw file location in the uploaded cache function below.

            var config         = SettingsManager.GetCredentials(); // todo this doesn't work. probably just move these configs for Azure Fxn
            var cosmosWriter   = new UploadHandler(config.EndPoint, config.AuthKey, config.CosmosDatabase, config.CosmosContainer, config.StaticDataCosmosContainer);
            var tripHandler    = new TripProcessorHandler(cosmosWriter);
            var plusCodeRanges = TripProcessorHandler.GetPlusCodeRanges(parsedGpx);

            tripHandler = await context.CallActivityAsync <TripProcessorHandler>("GpxFileUpload_WarmCache", (parsedGpx, tripHandler));

            // parallel tracks: upload raw while also computing overlaps.
            var overlapComputeParams = (parsedGpx, userId, plusCodeRanges, tripHandler);
            var overlappingNodesTask = context.CallActivityAsync <HashSet <UserNodeCoverage> >("GpxFileUpload_OverlappingNodes", overlapComputeParams);

            var uploadRawTask = context.CallActivityAsync("GpxFileUpload_UploadRawRun", (parsedGpx, userId, tripHandler));

            Task.WaitAll(overlappingNodesTask, uploadRawTask);
            var overlappingNodes = overlappingNodesTask.Result;

            // upload overlapping nodes
            var uploadCacheTask       = context.CallActivityAsync("GpxFileUpload_UploadCache", (overlappingNodes, tripHandler));
            var updateUserWayCoverage = context.CallActivityAsync("GpxFileUpload_UpdateUserWayCoverage", (overlappingNodes, userId, plusCodeRanges, tripHandler));

            Task.WaitAll(uploadCacheTask, updateUserWayCoverage);

            // upload summary
            await context.CallActivityAsync("GpxFileUpload_UpdateUserSummaryAsync", (userId, tripHandler));

            return(userId);
        }