Beispiel #1
0
 /// <summary>
 /// Perform event to message encoding
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public IEnumerable <NetworkMessageModel> EncodeAsUadp(DataSetMessageModel message)
 {
     foreach (var notification in message.Notifications)
     {
         using (var encoder = new BinaryEncoder(message.ServiceMessageContext)) {
             var value = new MonitoredItemMessage {
                 MessageContentMask = (message.Writer?.MessageSettings?
                                       .DataSetMessageContentMask).ToMonitoredItemMessageMask(
                     message.Writer?.DataSetFieldContentMask),
                 ApplicationUri  = message.ApplicationUri,
                 SubscriptionId  = message.SubscriptionId,
                 EndpointUrl     = message.EndpointUrl,
                 ExtensionFields = message.Writer?.DataSet?.ExtensionFields,
                 NodeId          = notification.NodeId.ToExpandedNodeId(message.ServiceMessageContext.NamespaceUris),
                 Timestamp       = message.TimeStamp ?? DateTime.UtcNow,
                 Value           = notification.Value,
                 DisplayName     = notification.DisplayName
             };
             value.Encode(encoder);
             var encoded = new NetworkMessageModel {
                 Body            = encoder.CloseAndReturnBuffer(),
                 ContentEncoding = "utf-8",
                 Timestamp       = DateTime.UtcNow,
                 ContentType     = ContentMimeType.UaBinary,
                 MessageId       = message.SequenceNumber.ToString(),
                 MessageSchema   = MessageSchemaTypes.MonitoredItemMessageBinary
             };
             yield return(encoded);
         }
     }
 }
 /// <summary>
 /// Perform event to message encoding
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public IEnumerable <NetworkMessageModel> Encode(DataSetMessageModel message)
 {
     foreach (var notification in message.Notifications)
     {
         var value = new MonitoredItemMessage {
             MessageContentMask = (message.Writer?.MessageSettings?
                                   .DataSetMessageContentMask).ToMonitoredItemMessageMask(
                 message.Writer?.DataSetFieldContentMask),
             ApplicationUri  = message.ApplicationUri,
             EndpointUrl     = message.EndpointUrl,
             ExtensionFields = message.Writer?.DataSet?.ExtensionFields,
             NodeId          = notification.NodeId,
             Value           = notification.Value,
             DisplayName     = notification.DisplayName
         };
         using (var writer = new StringWriter()) {
             using (var encoder = new JsonEncoderEx(writer, message.ServiceMessageContext)
             {
                 // TODO: Configure encoding further
                 UseUriEncoding = true
             }) {
                 value.Encode(encoder);
             }
             var encoded = new NetworkMessageModel {
                 Body            = Encoding.UTF8.GetBytes(writer.ToString()),
                 ContentEncoding = "utf-8",
                 Timestamp       = DateTime.UtcNow,
                 ContentType     = ContentMimeType.Json,
                 MessageId       = message.SequenceNumber.ToString(),
                 MessageSchema   = MessageSchemaTypes.MonitoredItemMessageJson
             };
             yield return(encoded);
         }
     }
 }
Beispiel #3
0
 /// <summary>
 /// Perform event to message encoding
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public IEnumerable <NetworkMessageModel> EncodeAsJson(DataSetMessageModel message)
 {
     foreach (var notification in message.Notifications)
     {
         using (var writer = new StringWriter()) {
             var value = new MonitoredItemMessage {
                 MessageContentMask = (message.Writer?.MessageSettings?
                                       .DataSetMessageContentMask).ToMonitoredItemMessageMask(
                     message.Writer?.DataSetFieldContentMask),
                 ApplicationUri  = message.ApplicationUri,
                 EndpointUrl     = message.EndpointUrl,
                 ExtensionFields = message.Writer?.DataSet?.ExtensionFields,
                 NodeId          = notification.NodeId.ToExpandedNodeId(message.ServiceMessageContext.NamespaceUris),
                 Timestamp       = message.TimeStamp ?? DateTime.UtcNow,
                 Value           = notification.Value,
                 DisplayName     = notification.DisplayName
             };
             using (var encoder = new JsonEncoderEx(writer, message.ServiceMessageContext)
             {
                 UseAdvancedEncoding = true,
                 UseUriEncoding = true,
                 UseReversibleEncoding = false
             }){
                 value.Encode(encoder);
             }
             var encoded = new NetworkMessageModel {
                 Body            = Encoding.UTF8.GetBytes(writer.ToString()),
                 ContentEncoding = "utf-8",
                 Timestamp       = DateTime.UtcNow,
                 ContentType     = ContentMimeType.UaLegacyPublisher,
                 MessageId       = message.SequenceNumber.ToString(),
                 MessageSchema   = MessageSchemaTypes.MonitoredItemMessageJson
             };
             yield return(encoded);
         }
     }
 }