Exemplo n.º 1
0
        public static BrokeredMessage GetBrokeredMessageFromObject(object serializableObject,
                                                                   CompressionSettings compressionSettings,
                                                                   OrchestrationInstance instance, string messageType)
        {
            if (serializableObject == null)
            {
                throw new ArgumentNullException("serializableObject");
            }

            if (compressionSettings.Style == CompressionStyle.Legacy)
            {
                return(new BrokeredMessage(serializableObject));
            }

            bool disposeStream = true;
            var  rawStream     = new MemoryStream();

            WriteObjectToStream(rawStream, serializableObject);

            try
            {
                BrokeredMessage brokeredMessage = null;

                if (compressionSettings.Style == CompressionStyle.Always ||
                    (compressionSettings.Style == CompressionStyle.Threshold && rawStream.Length >
                     compressionSettings.ThresholdInBytes))
                {
                    Stream compressedStream = GetCompressedStream(rawStream);

                    brokeredMessage = new BrokeredMessage(compressedStream, true);
                    brokeredMessage.Properties[FrameworkConstants.CompressionTypePropertyName] =
                        FrameworkConstants.CompressionTypeGzipPropertyValue;

                    TraceHelper.TraceInstance(TraceEventType.Information, instance,
                                              () =>
                                              "Compression stats for " + (messageType ?? string.Empty) + " : " + brokeredMessage.MessageId +
                                              ", uncompressed " + rawStream.Length + " -> compressed " + compressedStream.Length);
                }
                else
                {
                    brokeredMessage = new BrokeredMessage(rawStream, true);
                    disposeStream   = false;
                    brokeredMessage.Properties[FrameworkConstants.CompressionTypePropertyName] =
                        FrameworkConstants.CompressionTypeNonePropertyValue;
                }

                return(brokeredMessage);
            }
            finally
            {
                if (disposeStream)
                {
                    rawStream.Dispose();
                }
            }
        }
Exemplo n.º 2
0
 public static BrokeredMessage GetBrokeredMessageFromObject(object serializableObject,
                                                            CompressionSettings compressionSettings)
 {
     return(GetBrokeredMessageFromObject(serializableObject, compressionSettings, null, null));
 }