Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Channels / UdpRetransmissionSettings.cs / 1305376 / UdpRetransmissionSettings.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System;
using System.Runtime;
using System.ServiceModel.Discovery;
sealed class UdpRetransmissionSettings
{
int maxUnicastRetransmitCount;
int maxMulticastRetransmitCount;
TimeSpan delayLowerBound;
TimeSpan delayUpperBound;
TimeSpan maxDelayPerRetransmission;
int delayLowerBoundMilliseconds;
int delayUpperBoundMilliseconds;
int maxDelayMilliseconds;
public UdpRetransmissionSettings(int maxUnicastRetransmitCount, int maxMulticastRetransmitCount)
: this(maxUnicastRetransmitCount, maxMulticastRetransmitCount, TimeSpan.FromMilliseconds(50), TimeSpan.FromMilliseconds(250), TimeSpan.FromMilliseconds(500))
{
}
public UdpRetransmissionSettings(int maxUnicastRetransmitCount, int maxMulticastRetransmitCount, TimeSpan delayLowerBound, TimeSpan delayUpperBound, TimeSpan maxDelayPerRetransmission)
{
if (maxUnicastRetransmitCount < 0)
{
throw FxTrace.Exception.ArgumentOutOfRange("maxUnicastRetransmitCount", maxUnicastRetransmitCount,
SR.ArgumentOutOfMinRange(0));
}
if (maxMulticastRetransmitCount < 0)
{
throw FxTrace.Exception.ArgumentOutOfRange("maxMulticastRetransmitCount", maxMulticastRetransmitCount,
SR.ArgumentOutOfMinRange(0));
}
if (delayLowerBound < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("delayLowerBound", delayLowerBound, SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
if (delayUpperBound < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("delayUpperBound", delayUpperBound, SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
if (maxDelayPerRetransmission < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("maxDelayPerRetransmission", maxDelayPerRetransmission,
SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
this.maxUnicastRetransmitCount = maxUnicastRetransmitCount;
this.maxMulticastRetransmitCount = maxMulticastRetransmitCount;
this.delayLowerBound = delayLowerBound;
this.delayUpperBound = delayUpperBound;
this.maxDelayPerRetransmission = maxDelayPerRetransmission;
this.delayLowerBoundMilliseconds = -1;
this.delayUpperBoundMilliseconds = -1;
this.maxDelayMilliseconds = -1;
ValidateSettings();
}
//this constructor disables retransmission
internal UdpRetransmissionSettings()
: this(0, 0)
{
}
UdpRetransmissionSettings(UdpRetransmissionSettings other)
: this(other.maxUnicastRetransmitCount, other.maxMulticastRetransmitCount, other.delayLowerBound, other.delayUpperBound, other.maxDelayPerRetransmission)
{
}
public int MaxUnicastRetransmitCount
{
get
{
return this.maxUnicastRetransmitCount;
}
set
{
const int min = 0;
if (value < min)
{
throw FxTrace.Exception.ArgumentOutOfRange("value", value, SR.ArgumentOutOfMinRange(min));
}
this.maxUnicastRetransmitCount = value;
}
}
public int MaxMulticastRetransmitCount
{
get
{
return this.maxMulticastRetransmitCount;
}
set
{
const int min = 0;
if (value < min)
{
throw FxTrace.Exception.ArgumentOutOfRange("value", value, SR.ArgumentOutOfMinRange(min));
}
this.maxMulticastRetransmitCount = value;
}
}
public TimeSpan DelayLowerBound
{
get
{
return this.delayLowerBound;
}
set
{
if (value < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("value", value, SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
this.delayLowerBound = value;
}
}
public TimeSpan DelayUpperBound
{
get
{
return this.delayUpperBound;
}
set
{
if (value < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("value", value, SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
this.delayUpperBound = value;
}
}
public TimeSpan MaxDelayPerRetransmission
{
get
{
return this.maxDelayPerRetransmission;
}
set
{
if (value < TimeSpan.Zero)
{
throw FxTrace.Exception.ArgumentOutOfRange("value", value, SR.ArgumentOutOfMinRange(TimeSpan.Zero));
}
this.maxDelayPerRetransmission = value;
}
}
//called at send time to avoid repeated rounding and casting
internal int GetDelayLowerBound()
{
if (this.delayLowerBoundMilliseconds < 0)
{
this.delayLowerBoundMilliseconds = TimeoutHelper.ToMilliseconds(this.delayLowerBound);
}
return this.delayLowerBoundMilliseconds;
}
//called at send time to avoid repeated rounding and casting
internal int GetDelayUpperBound()
{
if (this.delayUpperBoundMilliseconds < 0)
{
this.delayUpperBoundMilliseconds = TimeoutHelper.ToMilliseconds(this.delayUpperBound);
}
return this.delayUpperBoundMilliseconds;
}
//called at send time to avoid repeated rounding and casting
internal int GetMaxDelayPerRetransmission()
{
if (this.maxDelayMilliseconds < 0)
{
this.maxDelayMilliseconds = TimeoutHelper.ToMilliseconds(this.maxDelayPerRetransmission);
}
return this.maxDelayMilliseconds;
}
internal bool Enabled
{
get
{
return this.maxUnicastRetransmitCount > 0 || this.maxMulticastRetransmitCount > 0;
}
}
internal void ValidateSettings()
{
if (this.delayLowerBound > this.delayUpperBound)
{
throw FxTrace.Exception.ArgumentOutOfRange("DelayLowerBound", this.delayLowerBound, SR.Property1LessThanOrEqualToProperty2("DelayLowerBound", this.delayLowerBound, "DelayUpperBound", this.delayUpperBound));
}
if (this.delayUpperBound > this.maxDelayPerRetransmission)
{
throw FxTrace.Exception.ArgumentOutOfRange("DelayUpperBound", this.delayUpperBound, SR.Property1LessThanOrEqualToProperty2("DelayUpperBound", this.delayUpperBound, "MaxDelayPerRetransmission", this.maxDelayPerRetransmission));
}
}
internal UdpRetransmissionSettings Clone()
{
return new UdpRetransmissionSettings(this);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PowerModeChangedEventArgs.cs
- ByteAnimationUsingKeyFrames.cs
- Application.cs
- ClientCultureInfo.cs
- DummyDataSource.cs
- CodeTypeParameter.cs
- EmptyStringExpandableObjectConverter.cs
- AuthenticationModuleElement.cs
- WindowsTreeView.cs
- SafeBuffer.cs
- PaperSource.cs
- AdjustableArrowCap.cs
- StylusTouchDevice.cs
- StringResourceManager.cs
- Unit.cs
- CharacterMetrics.cs
- CommonBehaviorsSection.cs
- CreatingCookieEventArgs.cs
- SizeChangedEventArgs.cs
- WorkflowInlining.cs
- XmlObjectSerializerReadContextComplexJson.cs
- RotateTransform.cs
- LogRecordSequence.cs
- SetterTriggerConditionValueConverter.cs
- StoryFragments.cs
- SourceFilter.cs
- ProbeRequestResponseAsyncResult.cs
- TextEditorLists.cs
- WindowsAuthenticationEventArgs.cs
- ComplexBindingPropertiesAttribute.cs
- SymmetricKeyWrap.cs
- SafeNativeMethods.cs
- CacheMemory.cs
- MsmqProcessProtocolHandler.cs
- NavigationProperty.cs
- MappingException.cs
- XmlNamespaceMapping.cs
- ObjectDataSourceEventArgs.cs
- DefaultExpression.cs
- FormViewPageEventArgs.cs
- WindowsIdentity.cs
- DataError.cs
- ServiceObjectContainer.cs
- PeerTransportSecuritySettings.cs
- WebPartTransformerCollection.cs
- SegmentInfo.cs
- ListContractAdapter.cs
- ObjectQueryProvider.cs
- WebPart.cs
- StringResourceManager.cs
- RegisteredDisposeScript.cs
- ConfigurationManagerHelper.cs
- WindowClosedEventArgs.cs
- VariableAction.cs
- Executor.cs
- FontNameEditor.cs
- ThicknessKeyFrameCollection.cs
- MembershipPasswordException.cs
- ContainerFilterService.cs
- SectionInformation.cs
- followingquery.cs
- ContractMapping.cs
- DataTemplateKey.cs
- TargetException.cs
- SourceChangedEventArgs.cs
- FrugalList.cs
- ValidationPropertyAttribute.cs
- HostExecutionContextManager.cs
- AddingNewEventArgs.cs
- ResizeGrip.cs
- DoubleLinkList.cs
- TrustSection.cs
- DataGridViewUtilities.cs
- HelpPage.cs
- PriorityQueue.cs
- QilXmlReader.cs
- SqlTriggerAttribute.cs
- StreamResourceInfo.cs
- PropertyPath.cs
- OperatorExpressions.cs
- DataGridColumnFloatingHeader.cs
- TraceListeners.cs
- WpfMemberInvoker.cs
- _UncName.cs
- MaskInputRejectedEventArgs.cs
- dtdvalidator.cs
- TextPattern.cs
- FlowLayout.cs
- TextBox.cs
- CompilationPass2Task.cs
- WhiteSpaceTrimStringConverter.cs
- WindowsButton.cs
- CollectionViewGroup.cs
- ReachPageContentCollectionSerializerAsync.cs
- XmlILStorageConverter.cs
- FlowNode.cs
- _LazyAsyncResult.cs
- SymbolDocumentInfo.cs
- AmbientLight.cs
- IgnoreFileBuildProvider.cs