コード例 #1
0
ファイル: Sender.cs プロジェクト: budul100/EBuEf2IVU
        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);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
 public RealTimeInformationImportFacadeClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) :
     base(RealTimeInformationImportFacadeClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress)
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
コード例 #3
0
 public RealTimeInformationImportFacadeClient(EndpointConfiguration endpointConfiguration) :
     base(RealTimeInformationImportFacadeClient.GetBindingForEndpoint(endpointConfiguration), RealTimeInformationImportFacadeClient.GetEndpointAddress(endpointConfiguration))
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
コード例 #4
0
 public RealTimeInformationImportFacadeClient() :
     base(RealTimeInformationImportFacadeClient.GetDefaultBinding(), RealTimeInformationImportFacadeClient.GetDefaultEndpointAddress())
 {
     this.Endpoint.Name = EndpointConfiguration.RealTimeInformationImportFacadePort.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
コード例 #5
0
 private static System.ServiceModel.EndpointAddress GetDefaultEndpointAddress()
 {
     return(RealTimeInformationImportFacadeClient.GetEndpointAddress(EndpointConfiguration.RealTimeInformationImportFacadePort));
 }
コード例 #6
0
 private static System.ServiceModel.Channels.Binding GetDefaultBinding()
 {
     return(RealTimeInformationImportFacadeClient.GetBindingForEndpoint(EndpointConfiguration.RealTimeInformationImportFacadePort));
 }