/// <summary> /// Process the bytes received from UADP channel as Subscriber /// </summary> /// <param name="message"></param> /// <param name="source"></param> private void ProcessReceivedMessage(byte[] message, IPEndPoint source) { Utils.Trace(Utils.TraceMasks.Information, "UdpPubSubConnection.ProcessReceivedMessage from source={0}", source); List <DataSetReaderDataType> dataSetReaders = GetOperationalDataSetReaders(); List <DataSetReaderDataType> dataSetReadersToDecode = new List <DataSetReaderDataType>(); foreach (DataSetReaderDataType dataSetReader in dataSetReaders) { // check if dataSetReaders have metadata information if (!ConfigurationVersionUtils.IsUsable(dataSetReader.DataSetMetaData)) { // check if it is possible to request the metadata information if (dataSetReader.DataSetWriterId != 0) { m_udpDiscoverySubscriber.AddWriterIdForDataSetMetadata(dataSetReader.DataSetWriterId); } } else { dataSetReadersToDecode.Add(dataSetReader); } } UadpNetworkMessage networkMessage = new UadpNetworkMessage(); networkMessage.DataSetDecodeErrorOccurred += NetworkMessage_DataSetDecodeErrorOccurred; networkMessage.Decode(MessageContext, message, dataSetReadersToDecode); networkMessage.DataSetDecodeErrorOccurred -= NetworkMessage_DataSetDecodeErrorOccurred; // Process the decoded network message ProcessDecodedNetworkMessage(networkMessage, source.ToString()); }
/// <summary> /// Process the bytes received from UADP discovery channel /// </summary> private void ProcessReceivedMessageDiscovery(byte[] messageBytes, IPEndPoint source) { Utils.Trace(Utils.TraceMasks.Information, "UdpDiscoveryPublisher.ProcessReceivedMessageDiscovery from source={0}", source); UadpNetworkMessage networkMessage = new UadpNetworkMessage(); // decode the received message networkMessage.Decode(MessageContext, messageBytes, null); if (networkMessage.UADPNetworkMessageType == UADPNetworkMessageType.DiscoveryRequest && networkMessage.UADPDiscoveryType == UADPNetworkMessageDiscoveryType.DataSetMetaData && networkMessage.DataSetWriterIds != null) { Utils.Trace(Utils.TraceMasks.Information, "UdpDiscoveryPublisher.ProcessReceivedMessageDiscovery Request MetaData Received on endpoint {1} for {0}", String.Join(", ", networkMessage.DataSetWriterIds), source.Address); foreach (UInt16 dataSetWriterId in networkMessage.DataSetWriterIds) { lock (m_lock) { if (!m_metadataWriterIdsToSend.Contains(dataSetWriterId)) { // collect requested ids m_metadataWriterIdsToSend.Add(dataSetWriterId); } } } Task.Run(SendResponseDataSetMetaData).ConfigureAwait(false); } }
/// <summary> /// Process the bytes received from UADP channel /// </summary> /// <param name="message"></param> /// <param name="source"></param> private void ProcessReceivedMessage(byte[] message, IPEndPoint source) { Utils.Trace(Utils.TraceMasks.Information, "UdpPubSubConnection.ProcessReceivedMessage from source={0}", source); UadpNetworkMessage networkMessage = new UadpNetworkMessage(); networkMessage.Decode(message, GetOperationalDataSetReaders()); // Raise rhe DataReceived event RaiseNetworkMessageDataReceivedEvent(networkMessage, source.ToString()); }