//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel { using System.ComponentModel; using System.ServiceModel.Channels; // The only purpose in life for these classes is so that, on standard bindings, you can say // binding.ReliableSession.Ordered // binding.ReliableSession.InactivityTimeout // binding.ReliableSession.Enabled // where these properties are "bucketized" all under .ReliableSession, which makes them easier to // discover/Intellisense public class ReliableSession { ReliableSessionBindingElement element; public ReliableSession() { this.element = new ReliableSessionBindingElement(); } public ReliableSession(ReliableSessionBindingElement reliableSessionBindingElement) { if (reliableSessionBindingElement == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reliableSessionBindingElement"); this.element = reliableSessionBindingElement; } [DefaultValue(ReliableSessionDefaults.Ordered)] public bool Ordered { get { return this.element.Ordered; } set { this.element.Ordered = value; } } public TimeSpan InactivityTimeout { get { return this.element.InactivityTimeout; } set { if (value <= TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.ValueMustBePositive))); this.element.InactivityTimeout = value; } } internal void CopySettings(ReliableSession copyFrom) { this.Ordered = copyFrom.Ordered; this.InactivityTimeout = copyFrom.InactivityTimeout; } } public class OptionalReliableSession : ReliableSession { bool enabled; public OptionalReliableSession() : base() { } public OptionalReliableSession(ReliableSessionBindingElement reliableSessionBindingElement) : base(reliableSessionBindingElement) { } // We don't include DefaultValue here because this defaults to false, so omitting it would make the XAML somewhat misleading public bool Enabled { get { return this.enabled; } set { this.enabled = value; } } internal void CopySettings(OptionalReliableSession copyFrom) { base.CopySettings(copyFrom); this.Enabled = copyFrom.Enabled; } } }