Пример #1
0
        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);
        }
Пример #2
0
        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);
                            }
                        }
                    }
                }
            }
        }