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
- smtpconnection.cs
- DocumentViewerHelper.cs
- WebPartActionVerb.cs
- Pens.cs
- ParameterCollection.cs
- WorkflowDebuggerSteppingAttribute.cs
- Font.cs
- SecurityState.cs
- MSHTMLHostUtil.cs
- ObjectDataSource.cs
- HashAlgorithm.cs
- RuntimeVariablesExpression.cs
- SystemFonts.cs
- ExpandCollapsePattern.cs
- ScriptingJsonSerializationSection.cs
- CultureInfo.cs
- sqlpipe.cs
- WriteableBitmap.cs
- ReferencedType.cs
- FileLoadException.cs
- CommonDialog.cs
- QueryStringParameter.cs
- Helpers.cs
- httpserverutility.cs
- DbConnectionStringBuilder.cs
- LoginName.cs
- ZipIOExtraFieldElement.cs
- EventLogSession.cs
- MarkupProperty.cs
- ProxyWebPart.cs
- AttributeQuery.cs
- DesignBindingEditor.cs
- SByte.cs
- BlurBitmapEffect.cs
- NetPeerTcpBindingElement.cs
- CodeRemoveEventStatement.cs
- COM2TypeInfoProcessor.cs
- SiteMapPathDesigner.cs
- TokenBasedSetEnumerator.cs
- WebHttpSecurityModeHelper.cs
- BaseTemplateParser.cs
- ListViewContainer.cs
- EventRecord.cs
- DataGridViewSelectedCellCollection.cs
- FaultDesigner.cs
- EndpointConfigContainer.cs
- HebrewCalendar.cs
- XamlTypeMapperSchemaContext.cs
- SimpleBitVector32.cs
- XmlTextReaderImpl.cs
- CompilerTypeWithParams.cs
- ScaleTransform.cs
- Base64Decoder.cs
- serverconfig.cs
- EntityType.cs
- EmptyEnumerable.cs
- SoapSchemaMember.cs
- ImportOptions.cs
- ScrollItemPatternIdentifiers.cs
- Effect.cs
- ServicesUtilities.cs
- RawStylusInputCustomData.cs
- FocusWithinProperty.cs
- CaseInsensitiveComparer.cs
- RemotingAttributes.cs
- FunctionQuery.cs
- HtmlLink.cs
- OperationSelectorBehavior.cs
- Compiler.cs
- SchemaTypeEmitter.cs
- ArrayTypeMismatchException.cs
- DetailsView.cs
- QilTernary.cs
- Funcletizer.cs
- SoapMessage.cs
- PropertyInformation.cs
- ManagedIStream.cs
- DynamicScriptObject.cs
- PictureBox.cs
- XmlNamespaceDeclarationsAttribute.cs
- DataViewManagerListItemTypeDescriptor.cs
- ImpersonateTokenRef.cs
- Pipe.cs
- TableLayoutColumnStyleCollection.cs
- UpDownEvent.cs
- QualifiedCellIdBoolean.cs
- ImageDrawing.cs
- SatelliteContractVersionAttribute.cs
- VisualBrush.cs
- TextComposition.cs
- SiteMembershipCondition.cs
- WebPermission.cs
- Utils.cs
- AffineTransform3D.cs
- QuotedStringFormatReader.cs
- PriorityChain.cs
- HtmlTableCellCollection.cs
- DriveNotFoundException.cs
- TextTreeTextNode.cs
- HashCodeCombiner.cs