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
- Error.cs
- FileDialogCustomPlace.cs
- WriterOutput.cs
- DynamicResourceExtension.cs
- DeviceSpecificDesigner.cs
- CallContext.cs
- ObjectStateEntry.cs
- QueryValue.cs
- SymmetricKeyWrap.cs
- ResXResourceWriter.cs
- BaseParagraph.cs
- NameSpaceExtractor.cs
- DesignerAutoFormatCollection.cs
- Message.cs
- LostFocusEventManager.cs
- Span.cs
- SubMenuStyleCollection.cs
- SchemaContext.cs
- RotationValidation.cs
- InfoCard.cs
- WebServiceHostFactory.cs
- NavigationHelper.cs
- AttachedAnnotation.cs
- TypeUsageBuilder.cs
- MatrixConverter.cs
- Repeater.cs
- ConnectionStringsExpressionBuilder.cs
- EncoderParameter.cs
- ExpressionList.cs
- CompleteWizardStep.cs
- Sorting.cs
- TypedCompletedAsyncResult.cs
- DoWorkEventArgs.cs
- SignatureGenerator.cs
- NonVisualControlAttribute.cs
- IsolatedStorageFile.cs
- DataGridColumnCollection.cs
- SqlNotificationRequest.cs
- ChangeProcessor.cs
- RowToParametersTransformer.cs
- OdbcReferenceCollection.cs
- TrustManager.cs
- TrackingServices.cs
- EntityCommandDefinition.cs
- RuleConditionDialog.Designer.cs
- CodeMethodInvokeExpression.cs
- SqlDataReader.cs
- NegationPusher.cs
- DuplicateContext.cs
- CodeObject.cs
- NextPreviousPagerField.cs
- EdmType.cs
- HttpProcessUtility.cs
- ExceptionUtil.cs
- SchemaAttDef.cs
- TextProviderWrapper.cs
- TextBoxView.cs
- PlatformNotSupportedException.cs
- GeometryModel3D.cs
- XmlSchemaAttributeGroupRef.cs
- StrokeCollectionDefaultValueFactory.cs
- HtmlAnchor.cs
- XmlParser.cs
- HttpPostedFileWrapper.cs
- QueryOperationResponseOfT.cs
- ClientApiGenerator.cs
- HostedElements.cs
- HitTestFilterBehavior.cs
- ColorTranslator.cs
- TextAction.cs
- UnmanagedMarshal.cs
- Math.cs
- ButtonField.cs
- StaticSiteMapProvider.cs
- Ipv6Element.cs
- ListViewDeletedEventArgs.cs
- SystemIPAddressInformation.cs
- GeneralTransform3DTo2D.cs
- odbcmetadatacollectionnames.cs
- XMLUtil.cs
- CategoryNameCollection.cs
- EntityDataSourceWrapper.cs
- Stack.cs
- HostExecutionContextManager.cs
- BitmapSourceSafeMILHandle.cs
- SqlCacheDependencyDatabase.cs
- ShaderRenderModeValidation.cs
- WebPartTracker.cs
- TimerElapsedEvenArgs.cs
- SimpleTextLine.cs
- WebPartHelpVerb.cs
- ProfessionalColorTable.cs
- HtmlControl.cs
- PromptStyle.cs
- ApplicationProxyInternal.cs
- TransformerConfigurationWizardBase.cs
- Automation.cs
- ApplicationManager.cs
- Stream.cs
- RadialGradientBrush.cs