Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / ServiceThrottlingBehavior.cs / 1 / ServiceThrottlingBehavior.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Description
{
using System.Collections.Generic;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;
using System.ServiceModel;
using System.Xml;
using System.Runtime.Serialization;
using System.Collections.ObjectModel;
public class ServiceThrottlingBehavior : IServiceBehavior
{
int calls = ServiceThrottle.DefaultMaxConcurrentCalls;
int sessions = ServiceThrottle.DefaultMaxConcurrentSessions;
int instances = Int32.MaxValue;
bool maxInstanceSetExplicitly;
public int MaxConcurrentCalls
{
get { return this.calls; }
set
{
if (value <= 0)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxThrottleLimitMustBeGreaterThanZero0)));
this.calls = value;
}
}
public int MaxConcurrentSessions
{
get { return this.sessions; }
set
{
if (value <= 0)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxThrottleLimitMustBeGreaterThanZero0)));
this.sessions = value;
}
}
public int MaxConcurrentInstances
{
get
{
if (this.maxInstanceSetExplicitly)
{
return this.instances;
}
else
{
//For V1: Default MaxConcurrentInstances should not enforce any throttle
//But still it should not be set to Int32.MAX;
//So compute default MaxInstances to be large enough to support MaxCalls & MaxSessions.
this.instances = this.calls + this.sessions;
if (this.instances < 0)
{
this.instances = Int32.MaxValue;
}
}
return this.instances;
}
set
{
if (value <= 0)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxThrottleLimitMustBeGreaterThanZero0)));
this.instances = value;
this.maxInstanceSetExplicitly = true;
}
}
void IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase)
{
}
void IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection endpoints, BindingParameterCollection parameters)
{
}
void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase)
{
if (serviceHostBase == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("serviceHostBase"));
ServiceThrottle serviceThrottle = serviceHostBase.ServiceThrottle;
serviceThrottle.MaxConcurrentCalls = this.calls;
serviceThrottle.MaxConcurrentSessions = this.sessions;
serviceThrottle.MaxConcurrentInstances = this.MaxConcurrentInstances;
for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DynamicValueConverter.cs
- ReflectTypeDescriptionProvider.cs
- ChangePasswordDesigner.cs
- WizardStepBase.cs
- NamespaceEmitter.cs
- DocumentGrid.cs
- AspProxy.cs
- DesignerUtility.cs
- QilLoop.cs
- SecurityRuntime.cs
- SafeLocalAllocation.cs
- WebBrowserSiteBase.cs
- AppDomainGrammarProxy.cs
- BroadcastEventHelper.cs
- UIElement3D.cs
- SerializerDescriptor.cs
- TextParagraph.cs
- PermissionSetEnumerator.cs
- GiveFeedbackEvent.cs
- WebPartCollection.cs
- Point3DCollection.cs
- LazyInitializer.cs
- OptimalTextSource.cs
- QuaternionValueSerializer.cs
- SubMenuStyleCollection.cs
- SpnegoTokenProvider.cs
- AuthenticationService.cs
- InternalConfigConfigurationFactory.cs
- DateTimeUtil.cs
- ReadWriteControlDesigner.cs
- EntityProxyFactory.cs
- ItemsPanelTemplate.cs
- HwndStylusInputProvider.cs
- PreviewControlDesigner.cs
- EntityViewContainer.cs
- Tile.cs
- Configuration.cs
- LockedHandleGlyph.cs
- XmlCharType.cs
- CompModSwitches.cs
- ChangeTracker.cs
- PropertyValueChangedEvent.cs
- EntityDataSourceDataSelection.cs
- LayoutEditorPart.cs
- TreeNodeCollection.cs
- TreeNodeConverter.cs
- KernelTypeValidation.cs
- ScriptingProfileServiceSection.cs
- ToolStripSettings.cs
- XmlQueryCardinality.cs
- CodeGen.cs
- _ListenerRequestStream.cs
- GeneralTransformGroup.cs
- Utility.cs
- Clock.cs
- LocalBuilder.cs
- ParenthesizePropertyNameAttribute.cs
- PropagatorResult.cs
- ConnectionStringsExpressionBuilder.cs
- DesignerLoader.cs
- Serializer.cs
- SafeProcessHandle.cs
- MobileUserControl.cs
- DoubleAnimation.cs
- BypassElementCollection.cs
- SystemIPv6InterfaceProperties.cs
- Queue.cs
- ButtonRenderer.cs
- GenerateTemporaryTargetAssembly.cs
- DefaultPerformanceCounters.cs
- ConfigurationPropertyAttribute.cs
- ManagementException.cs
- UniqueConstraint.cs
- AsmxEndpointPickerExtension.cs
- BitmapFrameDecode.cs
- ParserContext.cs
- LinqDataSourceDisposeEventArgs.cs
- HttpCookiesSection.cs
- Helper.cs
- HttpDictionary.cs
- ResourceSetExpression.cs
- GridLength.cs
- WizardForm.cs
- ThicknessConverter.cs
- SingleAnimationUsingKeyFrames.cs
- FloaterBaseParaClient.cs
- InputQueueChannelAcceptor.cs
- HwndSubclass.cs
- ToolStripSeparatorRenderEventArgs.cs
- Variant.cs
- DesignerAdapterUtil.cs
- ValidationErrorCollection.cs
- OpacityConverter.cs
- DocumentScope.cs
- BindingOperations.cs
- DbDataAdapter.cs
- RC2CryptoServiceProvider.cs
- SafeProcessHandle.cs
- SmiEventSink_DeferedProcessing.cs
- Ops.cs