File: System\ServiceModel\PeerResolvers\RefreshResponseInfo.cs
Project: ndp\cdf\src\WCF\ServiceModel\System.ServiceModel.csproj (System.ServiceModel)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.PeerResolvers
{
    using System.Runtime;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Channels;
 
    [MessageContract(IsWrapped = false)]
    public class RefreshResponseInfo
    {
        [DataContract(Name = "RefreshResponseInfo", Namespace = PeerStrings.Namespace)]
        class RefreshResponseInfoDC
        {
            [DataMember(Name = "RegistrationLifetime")]
            public TimeSpan RegistrationLifetime;
 
            [DataMember(Name = "Result")]
            public RefreshResult Result;
 
            public RefreshResponseInfoDC(TimeSpan registrationLifetime, RefreshResult result)
            {
                this.RegistrationLifetime = registrationLifetime;
                this.Result = result;
            }
        }
 
        public RefreshResponseInfo() : this(TimeSpan.Zero, RefreshResult.RegistrationNotFound) { }
 
        public RefreshResponseInfo(TimeSpan registrationLifetime, RefreshResult result)
        {
            this.body = new RefreshResponseInfoDC(registrationLifetime, result);
        }
 
        public TimeSpan RegistrationLifetime
        {
            get { return body.RegistrationLifetime; }
            set
            {
                if (value < TimeSpan.Zero)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
                        SR.GetString(SR.SFxTimeoutOutOfRange0)));
                }
 
                if (TimeoutHelper.IsTooLarge(value))
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
                        SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
                }
 
                this.body.RegistrationLifetime = value;
            }
        }
 
        public RefreshResult Result
        {
            get { return body.Result; }
            set { this.body.Result = value; }
        }
 
        [MessageBodyMember(Name = "RefreshResponse", Namespace = PeerStrings.Namespace)]
        RefreshResponseInfoDC body;
 
        public bool HasBody()
        {
            return body != null;
        }
    }
}