/// <summary> /// This Compress message method is called whenever the module is sent a message from the EdgeHub. /// It just pipe the messages without any change. /// It prints all the incoming messages. /// </summary> static async Task <MessageResponse> CompressMessage(Message message, object userContext) { var moduleClient = userContext as ModuleClient; if (moduleClient == null) { throw new InvalidOperationException("UserContext doesn't contain expected values"); } await moduleClient.CompleteAsync(message); byte[] messageBytes = message.GetBytes(); //returns the BodyStream of the message as bytes Console.WriteLine($"Received message with body size: {messageBytes.Length}"); if (messageBytes.Length > 0) { var compressedMessageData = CompressionClass.Compress(messageBytes); var outMessage = new Message(compressedMessageData); // copy properties from original message to new message foreach (var prop in message.Properties) { outMessage.Properties.Add(prop.Key, prop.Value); } // add a new property indicating the message is compressed with gzip so the backend can handle compressed and non-compressed messages outMessage.Properties.Add("compression", "gzip"); await moduleClient.SendEventAsync("compressMessageOutput", outMessage); Console.WriteLine($"Sent compressed message with body size: {compressedMessageData.Length}"); } else { var outMessage = new Message(messageBytes); foreach (var prop in message.Properties) { outMessage.Properties.Add(prop.Key, prop.Value); } await moduleClient.SendEventAsync("compressMessageOutput", outMessage); Console.WriteLine("Message had no body and was passed as-is."); } return(MessageResponse.None); }
public void Compress_Decompress_Returns_Original_Data() { var compressedData = CompressionClass.Compress(decompressedContentData); Assert.Equal(decompressedContentData, CompressionClass.Decompress(compressedData)); }
public void Compress_Empty_Buffer_Returns_Empty_Buffer() { Assert.Equal(emptyMsgData, CompressionClass.Compress(emptyMsgData)); }