Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / Description / ControlOperationBehavior.cs / 1305376 / ControlOperationBehavior.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.ServiceModel.Activities.Description
{
using System.Runtime;
using System.ServiceModel.Activities.Dispatcher;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
class ControlOperationBehavior : IOperationBehavior
{
bool isWrappedMode;
//There are two modes of operation.
// 1) IWorkflowControlServiceOperations :: Implemented completley by the ControlOperationInvoker.
// 2) Infrastructure endpoints(Delay/Compensation/OCS) where we wrap their invoker over ControlOperationInvoker.
public ControlOperationBehavior(bool isWrappedMode)
{
this.isWrappedMode = isWrappedMode;
}
public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
}
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
ServiceHostBase serviceHost = dispatchOperation.Parent.ChannelDispatcher.Host;
if (!(serviceHost is WorkflowServiceHost))
{
throw FxTrace.Exception.AsError(
new InvalidOperationException(SR.WorkflowBehaviorWithNonWorkflowHost(typeof(ControlOperationBehavior).Name)));
}
ServiceEndpoint endpoint = null;
foreach (ServiceEndpoint endpointToMatch in serviceHost.Description.Endpoints)
{
if (endpointToMatch.Id == dispatchOperation.Parent.EndpointDispatcher.Id)
{
endpoint = endpointToMatch;
break;
}
}
if (this.isWrappedMode)
{
CorrelationKeyCalculator keyCalculator = null;
if (endpoint != null)
{
CorrelationQueryBehavior endpointQueryBehavior = endpoint.Behaviors.Find();
if (endpointQueryBehavior != null)
{
keyCalculator = endpointQueryBehavior.GetKeyCalculator();
}
}
//This will be the case for infrastructure endpoints like Compensation/Interop OCS endpoints.
dispatchOperation.Invoker = new ControlOperationInvoker(
operationDescription,
endpoint,
keyCalculator,
dispatchOperation.Invoker,
serviceHost);
}
else
{
//This will be for IWorkflowInstanceManagement endpoint operation.
dispatchOperation.Invoker = new ControlOperationInvoker(
operationDescription,
endpoint,
null,
serviceHost);
}
}
public void Validate(OperationDescription operationDescription)
{
}
}
}
// 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
- StreamingContext.cs
- Repeater.cs
- Shape.cs
- WorkflowServiceBuildProvider.cs
- TTSEvent.cs
- ReadOnlyTernaryTree.cs
- FlatButtonAppearance.cs
- ToolStripTextBox.cs
- OdbcConnectionHandle.cs
- Mappings.cs
- XmlSchemaRedefine.cs
- XmlHelper.cs
- CompiledRegexRunnerFactory.cs
- ConnectionsZone.cs
- GetPageCompletedEventArgs.cs
- RsaSecurityToken.cs
- ValidatorCollection.cs
- SpecialNameAttribute.cs
- DropShadowBitmapEffect.cs
- MatrixTransform.cs
- FlowDocument.cs
- StylusPointProperties.cs
- PasswordRecovery.cs
- DataGridDetailsPresenterAutomationPeer.cs
- TextBox.cs
- RoamingStoreFileUtility.cs
- TextComposition.cs
- UniqueConstraint.cs
- FieldNameLookup.cs
- HostedHttpContext.cs
- WebPartDisplayModeEventArgs.cs
- ObjectQueryExecutionPlan.cs
- AnnotationComponentManager.cs
- ContextQuery.cs
- MenuItem.cs
- Panel.cs
- TagNameToTypeMapper.cs
- Part.cs
- EmptyQuery.cs
- KeyMatchBuilder.cs
- CommandPlan.cs
- SchemaAttDef.cs
- Types.cs
- dbenumerator.cs
- Function.cs
- InternalDuplexChannelFactory.cs
- ScrollEventArgs.cs
- AsyncPostBackTrigger.cs
- DataTable.cs
- _BasicClient.cs
- DocumentXmlWriter.cs
- SequenceNumber.cs
- HashFinalRequest.cs
- Control.cs
- DataTemplateSelector.cs
- LogRecordSequence.cs
- ToolZone.cs
- SliderAutomationPeer.cs
- SqlDataSourceFilteringEventArgs.cs
- StyleBamlRecordReader.cs
- WebPartManager.cs
- WebPartTracker.cs
- PreviewKeyDownEventArgs.cs
- PageThemeBuildProvider.cs
- TransactionFilter.cs
- TreeViewImageIndexConverter.cs
- Int32Rect.cs
- LocalizationParserHooks.cs
- TraceHandlerErrorFormatter.cs
- ExeConfigurationFileMap.cs
- StringUtil.cs
- StyleTypedPropertyAttribute.cs
- Roles.cs
- DummyDataSource.cs
- EnumUnknown.cs
- KeyedPriorityQueue.cs
- SchemaNames.cs
- WebDisplayNameAttribute.cs
- ADConnectionHelper.cs
- Processor.cs
- DataBindingHandlerAttribute.cs
- ObjectStorage.cs
- BamlLocalizableResource.cs
- AdPostCacheSubstitution.cs
- PageDeviceFont.cs
- PassportAuthenticationModule.cs
- shaperfactory.cs
- Quaternion.cs
- CodeRegionDirective.cs
- SynthesizerStateChangedEventArgs.cs
- QilXmlWriter.cs
- ScrollItemPatternIdentifiers.cs
- Emitter.cs
- MethodToken.cs
- DnsEndPoint.cs
- CalculatedColumn.cs
- FontSourceCollection.cs
- WizardStepBase.cs
- DrawingBrush.cs
- CodeSnippetStatement.cs