/// <summary> /// Initialize Connection properties from connection configuration object /// </summary> private void Initialize() { PubSubConnectionDataType pubSubConnectionConfiguration = m_udpConnection.PubSubConnectionConfiguration; DatagramConnectionTransportDataType transportSettings = ExtensionObject.ToEncodeable(pubSubConnectionConfiguration.TransportSettings) as DatagramConnectionTransportDataType; if (transportSettings != null && transportSettings.DiscoveryAddress != null) { NetworkAddressUrlDataType discoveryNetworkAddressUrlState = ExtensionObject.ToEncodeable(transportSettings.DiscoveryAddress) as NetworkAddressUrlDataType; if (discoveryNetworkAddressUrlState != null) { Utils.Trace(Utils.TraceMasks.Information, "The configuration for connection {0} has custom DiscoveryAddress configuration.", pubSubConnectionConfiguration.Name); DiscoveryNetworkInterfaceName = discoveryNetworkAddressUrlState.NetworkInterface; DiscoveryNetworkAddressEndPoint = UdpClientCreator.GetEndPoint(discoveryNetworkAddressUrlState.Url); } } if (DiscoveryNetworkAddressEndPoint == null) { Utils.Trace(Utils.TraceMasks.Information, "The configuration for connection {0} will use the default DiscoveryAddress: {1}.", pubSubConnectionConfiguration.Name, kDefaultDiscoveryUrl); DiscoveryNetworkAddressEndPoint = UdpClientCreator.GetEndPoint(kDefaultDiscoveryUrl); } }
/// <summary> /// Perform specific Start tasks /// </summary> protected override Task InternalStart() { lock (m_lock) { //cleanup all existing UdpClient previously open InternalStop(); NetworkAddressUrlDataType networkAddressUrlState = ExtensionObject.ToEncodeable(PubSubConnectionConfiguration.Address) as NetworkAddressUrlDataType; if (networkAddressUrlState == null) { Utils.Trace(Utils.TraceMasks.Error, "The configuration for connection {0} has invalid Address configuration.", this.PubSubConnectionConfiguration.Name); return(Task.FromResult <object>(null)); } NetworkInterfaceName = networkAddressUrlState.NetworkInterface; NetworkAddressEndPoint = UdpClientCreator.GetEndPoint(networkAddressUrlState.Url); if (NetworkAddressEndPoint == null) { Utils.Trace(Utils.TraceMasks.Error, "The configuration for connection {0} with Url:'{1}' resulted in an invalid endpoint.", this.PubSubConnectionConfiguration.Name, networkAddressUrlState.Url); return(Task.FromResult <object>(null)); } //publisher initialization if (Publishers.Count > 0) { m_publisherUdpClients = UdpClientCreator.GetUdpClients(UsedInContext.Publisher, networkAddressUrlState, NetworkAddressEndPoint); } //subscriber initialization if (GetAllDataSetReaders().Count > 0) { m_subscriberUdpClients = UdpClientCreator.GetUdpClients(UsedInContext.Subscriber, networkAddressUrlState, NetworkAddressEndPoint); foreach (UdpClient subscriberUdpClient in m_subscriberUdpClients) { try { subscriberUdpClient.BeginReceive(new AsyncCallback(OnUadpReceive), subscriberUdpClient); } catch (Exception ex) { Utils.Trace(Utils.TraceMasks.Information, "UdpClient '{0}' Cannot receive data. Exception: {1}", subscriberUdpClient.Client.LocalEndPoint, ex.Message); } } } } return(Task.FromResult <object>(null)); }
/// <summary> /// Initialize Conection properties from connection configuration object /// </summary> private void Initialize() { NetworkAddressUrlDataType networkAddressUrlState = ExtensionObject.ToEncodeable(PubSubConnectionConfiguration.Address) as NetworkAddressUrlDataType; if (networkAddressUrlState == null) { Utils.Trace(Utils.TraceMasks.Error, "The configuration for connection {0} has invalid Address configuration.", PubSubConnectionConfiguration.Name); return; } // set properties NetworkInterfaceName = networkAddressUrlState.NetworkInterface; NetworkAddressEndPoint = UdpClientCreator.GetEndPoint(networkAddressUrlState.Url); if (NetworkAddressEndPoint == null) { Utils.Trace(Utils.TraceMasks.Error, "The configuration for connection {0} with Url:'{1}' resulted in an invalid endpoint.", PubSubConnectionConfiguration.Name, networkAddressUrlState.Url); } }