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
- EntityDataSourceColumn.cs
- DoubleCollectionConverter.cs
- _ListenerAsyncResult.cs
- HtmlElementEventArgs.cs
- OracleTimeSpan.cs
- ListViewDesigner.cs
- GridViewRow.cs
- PopupEventArgs.cs
- ImageFormatConverter.cs
- TextElementCollection.cs
- Geometry3D.cs
- AppliedDeviceFiltersEditor.cs
- Dispatcher.cs
- RecipientInfo.cs
- TraceSection.cs
- CodeMethodReturnStatement.cs
- TextTreeDeleteContentUndoUnit.cs
- XmlPreloadedResolver.cs
- Bitmap.cs
- _CommandStream.cs
- ReferenceSchema.cs
- VisualTreeHelper.cs
- ToolStripGrip.cs
- EventPrivateKey.cs
- LoginName.cs
- ResourceReferenceExpression.cs
- CountdownEvent.cs
- State.cs
- PerformanceCounterManager.cs
- SqlConnection.cs
- TransformCollection.cs
- IntegerCollectionEditor.cs
- PackageProperties.cs
- MasterPage.cs
- BamlReader.cs
- QilParameter.cs
- SafeCloseHandleCritical.cs
- LinkArea.cs
- Schema.cs
- QilPatternFactory.cs
- ScrollData.cs
- ValueType.cs
- DataBoundControl.cs
- MetafileHeaderWmf.cs
- CompleteWizardStep.cs
- ScrollChrome.cs
- Screen.cs
- InputReportEventArgs.cs
- activationcontext.cs
- RoleManagerSection.cs
- DependencyPropertyKey.cs
- _NegotiateClient.cs
- ListViewItem.cs
- DecimalConstantAttribute.cs
- CachedCompositeFamily.cs
- xsdvalidator.cs
- NamespaceExpr.cs
- TransformDescriptor.cs
- XmlBinaryReader.cs
- XsdSchemaFileEditor.cs
- DrawingServices.cs
- MenuAutomationPeer.cs
- BufferBuilder.cs
- WebPartConnectVerb.cs
- ConfigurationStrings.cs
- TargetParameterCountException.cs
- LinkUtilities.cs
- RSAPKCS1SignatureDeformatter.cs
- EntityDataSourceMemberPath.cs
- ErrorLog.cs
- OuterGlowBitmapEffect.cs
- GPPOINT.cs
- WindowsFormsHelpers.cs
- _NestedMultipleAsyncResult.cs
- TrustLevel.cs
- DivideByZeroException.cs
- EventLogTraceListener.cs
- OracleString.cs
- OrderedParallelQuery.cs
- basenumberconverter.cs
- GacUtil.cs
- _ListenerAsyncResult.cs
- RuntimeHelpers.cs
- FileCodeGroup.cs
- Monitor.cs
- UnhandledExceptionEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- ListControlConvertEventArgs.cs
- SelectedGridItemChangedEvent.cs
- SocketException.cs
- ColorAnimationBase.cs
- CodeTypeReference.cs
- EntityContainerEntitySet.cs
- DataGridAddNewRow.cs
- PrintDialog.cs
- SoapHeaderAttribute.cs
- XmlILOptimizerVisitor.cs
- SecurityUtils.cs
- SqlDataSourceSelectingEventArgs.cs
- SynchronizedDispatch.cs