/// <summary>
 /// Perform json encoding
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public IEnumerable <NetworkMessageModel> EncodeAsJson(DataSetMessageModel message)
 {
     foreach (var networkMessage in GetNetworkMessages(message.YieldReturn()))
     {
         using (var writer = new StringWriter()) {
             using (var encoder = new JsonEncoderEx(writer, message.ServiceMessageContext)
             {
                 UseAdvancedEncoding = true,
                 UseUriEncoding = true,
                 UseReversibleEncoding = false
             }) {
                 networkMessage.Encode(encoder);
             }
             var json    = writer.ToString();
             var encoded = new NetworkMessageModel {
                 Body            = Encoding.UTF8.GetBytes(json),
                 ContentEncoding = "utf-8",
                 Timestamp       = DateTime.UtcNow,
                 ContentType     = ContentMimeType.Json,
                 MessageId       = message.SequenceNumber.ToString(),
                 MessageSchema   = MessageSchemaTypes.NetworkMessageJson
             };
             yield return(encoded);
         }
     }
 }
 /// <summary>
 /// Perform uadp encoding
 /// </summary>
 /// <param name="message"></param>
 /// <returns></returns>
 public IEnumerable <NetworkMessageModel> EncodeAsUadp(DataSetMessageModel message)
 {
     foreach (var networkMessage in GetNetworkMessages(message.YieldReturn()))
     {
         using (var encoder = new BinaryEncoder(message.ServiceMessageContext)) {
             networkMessage.Encode(encoder);
             var encoded = new NetworkMessageModel {
                 Body          = encoder.CloseAndReturnBuffer(),
                 Timestamp     = DateTime.UtcNow,
                 ContentType   = ContentMimeType.Uadp,
                 MessageId     = message.SequenceNumber.ToString(),
                 MessageSchema = MessageSchemaTypes.NetworkMessageUadp
             };
             yield return(encoded);
         }
     }
 }