コード例 #1
0
        /// <summary>
        /// Displays the feed results.
        /// </summary>
        /// <param name="results">The results.</param>
        public async Task DisplayFeedResultsAsync(FeedResultData results)
        {
            // Output to console
            // new FeedToConsole(results.GpsRecords, results.StatusData, results.FaultData).Run();
            // Optionally we can output to csv or google doc:
            new FeedToCsv(path, results.GpsRecords, results.StatusData, results.FaultData, results.Trips, results.ExceptionEvents).Run();

            // new FeedToBigquery(path).Run();
            await Task.Delay(1000);
        }
コード例 #2
0
        /// <summary>
        /// Displays the feed results.
        /// </summary>
        /// <param name="results">The results.</param>
        public void DisplayFeedResults(FeedResultData results)
        {
            // Output to console
            // new FeedToConsole(results.GpsRecords, results.StatusData, results.FaultData).Run();
            // Optionally we can output to csv or google doc:
            new FeedToCsv(path, results.GpsRecords, results.StatusData, results.FaultData, results.Trips, results.ExceptionEvents).Run();

            // new FeedToBigquery(path).Run();
            Thread.Sleep(1000);
        }
コード例 #3
0
        /// <summary>
        /// Requests the feed data, populates feedParams data collections
        /// </summary>
        /// <param name="feedParams">Contains latest data token and collections to populate during this call.</param>
        /// <returns><see cref="FeedResultData"/></returns>
        public async Task <FeedResultData> GetAsync(FeedParameters feedParams)
        {
            FeedResultData feedResults = new FeedResultData(new List <LogRecord>(), new List <StatusData>(), new List <FaultData>(), new List <Trip>(), new List <ExceptionEvent>());

            try
            {
                if (DateTime.UtcNow > repopulateCaches)
                {
                    await PopulateCachesAsync();

                    repopulateCaches = DateTime.UtcNow.AddHours(RepopulatePeroid);
                }
                FeedResult <LogRecord> feedLogRecordData = await MakeFeedCallAsync <LogRecord>(feedParams.LastGpsDataToken);

                FeedResult <StatusData> feedStatusData = await MakeFeedCallAsync <StatusData>(feedParams.LastStatusDataToken);

                FeedResult <FaultData> feedFaultData = await MakeFeedCallAsync <FaultData>(feedParams.LastFaultDataToken);

                FeedResult <Trip> feedTripData = await MakeFeedCallAsync <Trip>(feedParams.LastTripToken);

                FeedResult <ExceptionEvent> feedExceptionData = await MakeFeedCallAsync <ExceptionEvent>(feedParams.LastExceptionToken);

                feedParams.LastGpsDataToken = feedLogRecordData.ToVersion;
                foreach (LogRecord log in feedLogRecordData.Data)
                {
                    // Populate relevant LogRecord fields.
                    log.Device = await GetDeviceAsync(log.Device);

                    feedResults.GpsRecords.Add(log);
                }
                feedParams.LastStatusDataToken = feedStatusData.ToVersion;
                foreach (StatusData log in feedStatusData.Data)
                {
                    // Populate relevant StatusData fields.
                    log.Device = await GetDeviceAsync(log.Device);

                    log.Diagnostic = await GetDiagnosticAsync(log.Diagnostic);

                    feedResults.StatusData.Add(log);
                }
                feedParams.LastFaultDataToken = feedFaultData.ToVersion;
                foreach (FaultData log in feedFaultData.Data)
                {
                    // Populate relevant FaultData fields.
                    log.Device = await GetDeviceAsync(log.Device);

                    log.Diagnostic = await GetDiagnosticAsync(log.Diagnostic);

                    log.Controller = await GetControllerAsync(log.Controller);

                    log.FailureMode = await GetFailureModeAsync(log.FailureMode);

                    feedResults.FaultData.Add(log);
                }
                feedParams.LastTripToken = feedTripData.ToVersion;
                foreach (Trip trip in feedTripData.Data)
                {
                    trip.Device = await GetDeviceAsync(trip.Device);

                    trip.Driver = await GetDriver(trip.Driver);

                    feedResults.Trips.Add(trip);
                }
                feedParams.LastExceptionToken = feedExceptionData.ToVersion;
                foreach (ExceptionEvent exceptionEvent in feedExceptionData.Data)
                {
                    exceptionEvent.Device = await GetDeviceAsync(exceptionEvent.Device);

                    exceptionEvent.Driver = await GetDriver(exceptionEvent.Driver);

                    exceptionEvent.Diagnostic = await GetDiagnosticAsync(exceptionEvent.Diagnostic);

                    exceptionEvent.Rule = await GetRuleAsync(exceptionEvent.Rule);

                    feedResults.ExceptionEvents.Add(exceptionEvent);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                if (e is HttpRequestException)
                {
                    await Task.Delay(5000);
                }
                if (e is DbUnavailableException)
                {
                    await Task.Delay(TimeSpan.FromMinutes(5));
                }
            }
            return(feedResults);
        }