This class represents the factory for producing WOPI message encoder.
Inheritance: System.ServiceModel.Channels.MessageEncoderFactory
        /// <summary>
        /// Initializes a new instance of the WOPIMessageEncoder class with the specified message encoder factory.
        /// </summary>
        /// <param name="factory">Specify the message encoder factory.</param>
        public WOPIMessageEncoder(WOPIMessageEncoderFactory factory)
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement();
            element.MessageVersion = factory.MessageVersion;
            element.WriteEncoding = Encoding.GetEncoding(factory.CharSet);

            this.innerEncoder = element.CreateMessageEncoderFactory().Encoder;
            this.factory = factory;
            this.contentType = string.Format("{0}; charset={1}", "text/xml", this.factory.CharSet);
        }
        /// <summary>
        /// Initializes a new instance of the WOPIMessageEncoder class with the specified message encoder factory.
        /// </summary>
        /// <param name="factory">Specify the message encoder factory.</param>
        public WOPIMessageEncoder(WOPIMessageEncoderFactory factory)
        {
            TextMessageEncodingBindingElement element = new TextMessageEncodingBindingElement();

            element.MessageVersion = factory.MessageVersion;
            element.WriteEncoding  = Encoding.GetEncoding(factory.CharSet);

            this.innerEncoder = element.CreateMessageEncoderFactory().Encoder;
            this.factory      = factory;
            this.contentType  = string.Format("{0}; charset={1}", "text/xml", this.factory.CharSet);
        }
示例#3
0
        /// <summary>
        /// This method is used to calculate the message size.
        /// </summary>
        /// <param name="message">Specify the request message.</param>
        /// <returns>Return the size of the request message.</returns>
        private int SizeOfWOPIMessage(Message message)
        {
            // Create an WOPI encoder
            WOPIMessageEncodingBindingElement element = new WOPIMessageEncodingBindingElement();

            element.MessageVersion = message.Version;
            element.Encoding       = this.context.GetValueOrDefault <string>("Encoding", "utf-8");
            WOPIMessageEncoderFactory factory = (WOPIMessageEncoderFactory)element.CreateMessageEncoderFactory();
            MessageEncoder            encoder = factory.Encoder;

            // Write the message and return its length
            int size;

            using (MemoryStream stream = new MemoryStream())
            {
                encoder.WriteMessage(message, stream);
                size = (int)stream.Length;
            }

            return(size);
        }