Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        public void Compress_Decompress_Returns_Original_Data()
        {
            var compressedData = CompressionClass.Compress(decompressedContentData);

            Assert.Equal(decompressedContentData, CompressionClass.Decompress(compressedData));
        }
Beispiel #3
0
 public void Compress_Empty_Buffer_Returns_Empty_Buffer()
 {
     Assert.Equal(emptyMsgData, CompressionClass.Compress(emptyMsgData));
 }