File: System\ServiceModel\Channels\DelegatingMessage.cs
Web Access
Project: src\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Xml;
 
namespace System.ServiceModel.Channels
{
    internal abstract class DelegatingMessage : Message
    {
        protected DelegatingMessage(Message innerMessage)
        {
            InnerMessage = innerMessage ?? throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(innerMessage));
        }
 
        public override bool IsEmpty
        {
            get
            {
                return InnerMessage.IsEmpty;
            }
        }
 
        public override bool IsFault
        {
            get { return InnerMessage.IsFault; }
        }
 
        public override MessageHeaders Headers
        {
            get { return InnerMessage.Headers; }
        }
 
        public override MessageProperties Properties
        {
            get { return InnerMessage.Properties; }
        }
 
        public override MessageVersion Version
        {
            get { return InnerMessage.Version; }
        }
 
        protected Message InnerMessage { get; }
 
        protected override void OnClose()
        {
            base.OnClose();
            InnerMessage.Close();
        }
 
        protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer)
        {
            InnerMessage.WriteStartEnvelope(writer);
        }
 
        protected override void OnWriteStartHeaders(XmlDictionaryWriter writer)
        {
            InnerMessage.WriteStartHeaders(writer);
        }
 
        protected override void OnWriteStartBody(XmlDictionaryWriter writer)
        {
            InnerMessage.WriteStartBody(writer);
        }
 
        protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
        {
            InnerMessage.WriteBodyContents(writer);
        }
 
        protected override string OnGetBodyAttribute(string localName, string ns)
        {
            return InnerMessage.GetBodyAttribute(localName, ns);
        }
 
        protected override void OnBodyToString(XmlDictionaryWriter writer)
        {
            InnerMessage.BodyToString(writer);
        }
    }
}