// 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. namespace System.ServiceModel.Dispatcher { internal class ImmutableCommunicationTimeouts : IDefaultCommunicationTimeouts { private TimeSpan _close; private TimeSpan _open; private TimeSpan _receive; private TimeSpan _send; internal ImmutableCommunicationTimeouts() : this(null) { } internal ImmutableCommunicationTimeouts(IDefaultCommunicationTimeouts timeouts) { if (timeouts == null) { _close = ServiceDefaults.CloseTimeout; _open = ServiceDefaults.OpenTimeout; _receive = ServiceDefaults.ReceiveTimeout; _send = ServiceDefaults.SendTimeout; } else { _close = timeouts.CloseTimeout; _open = timeouts.OpenTimeout; _receive = timeouts.ReceiveTimeout; _send = timeouts.SendTimeout; } } TimeSpan IDefaultCommunicationTimeouts.CloseTimeout { get { return _close; } } TimeSpan IDefaultCommunicationTimeouts.OpenTimeout { get { return _open; } } TimeSpan IDefaultCommunicationTimeouts.ReceiveTimeout { get { return _receive; } } TimeSpan IDefaultCommunicationTimeouts.SendTimeout { get { return _send; } } } }