private RealTimeInfoTO GetRealtimeInfo(int eventCode, int classifier, string tripNumber, DateTime timeStamp, string stopArea, string track, IEnumerable <string> vehicles) { var result = default(RealTimeInfoTO); if (!string.IsNullOrWhiteSpace(stopArea)) { try { var unixTimeStamp = timeStamp.ToUnixTimestamp(); result = new RealTimeInfoTO { classifier = classifier, classifierSpecified = true, deviceId = deviceID, division = division, //employeeId = this.config.User, eventCode = eventCode, stopArea = stopArea, timeStamp = unixTimeStamp, trainCombinationCompleteSpecified = true, tripIdentificationDate = unixTimeStamp, tripIdentificationDateSpecified = true, tripNumber = tripNumber, }; if (!string.IsNullOrEmpty(track)) { result.track = track; result.trackposition = RealtimeInfoConstants.TrackPosition; result.trackpositionSpecified = true; result.shuntingTrip = RealtimeInfoConstants.ShuntingTrip; result.shuntingTripSpecified = true; } result.vehicles = vehicles.GetVehicleTOs().ToArray(); result.trainCombinationComplete = result.vehicles.GetTrainCombinationComplete(); return(result); } catch (Exception ex) { logger.LogError( "Fehler beim Erzeugen einer Ist-Zeit-Nachrichten für IVU.rail: {message}", ex.Message); } } return(result); }
private async Task RunSenderAsync(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { if (!infosQueue.IsEmpty) { using var client = new RealTimeInformationImportFacadeClient(); client.Endpoint.Address = endpointAddress; infosQueue.TryDequeue(out RealTimeInfoTO currentMessage);; if (currentMessage != default) { var importInfo = new RealTimeInfoTO[1] { currentMessage }; var response = await client.importRealTimeInfoAsync(importInfo); var result = response.importRealTimeInfoResponse1?.ToArray(); if (result?.Any() ?? false) { var relevantValiditation = result.First(); var relevantMessage = currentMessage; if (relevantValiditation.code == 0) { logger.LogDebug( "Ist-Zeit-Nachricht wurde erfolgreich an IVU.rail gesendet " + "(Zug: {trainNumber}, Betriebsstelle: {location}, Decoder: {decoder}).", relevantMessage.tripNumber, relevantMessage.stopArea, relevantMessage.vehicles.FirstOrDefault()?.number); } else { logger.LogError( "Fehlermeldung zur Ist-Zeit-Nachricht von IVU.rail empfangen " + "(Zug: {trainNumber}, Betriebsstelle: {location}, Decoder: {decoder}): {message}.", relevantValiditation.message, relevantMessage.tripNumber, relevantMessage.stopArea, relevantMessage.vehicles.FirstOrDefault()?.number); } } } } } }