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
- ThicknessAnimationBase.cs
- CoreChannel.cs
- DataBindingHandlerAttribute.cs
- DigestComparer.cs
- shaperfactoryquerycacheentry.cs
- PeerTransportListenAddressValidatorAttribute.cs
- ViewManagerAttribute.cs
- DataGridAutoFormatDialog.cs
- MetadataArtifactLoaderResource.cs
- PackagingUtilities.cs
- XPathNavigatorReader.cs
- ObjectListCommandsPage.cs
- ResourceIDHelper.cs
- InlinedAggregationOperatorEnumerator.cs
- Part.cs
- FileUtil.cs
- ConstraintManager.cs
- ColumnResizeUndoUnit.cs
- Timeline.cs
- AvTraceDetails.cs
- ExcludePathInfo.cs
- Clause.cs
- TransformedBitmap.cs
- ContainerCodeDomSerializer.cs
- TableParagraph.cs
- CodeMemberField.cs
- ComponentDispatcher.cs
- CaseExpr.cs
- PackageRelationshipSelector.cs
- SetStateDesigner.cs
- PolyBezierSegment.cs
- TimeSpanMinutesConverter.cs
- XmlNodeList.cs
- PeerNodeAddress.cs
- ISO2022Encoding.cs
- Oid.cs
- UpdateCompiler.cs
- MediaContextNotificationWindow.cs
- TextEncodedRawTextWriter.cs
- ActivityExecutionFilter.cs
- ResourceDefaultValueAttribute.cs
- CodeAttributeArgumentCollection.cs
- AsyncDataRequest.cs
- SiteMapNodeCollection.cs
- GifBitmapEncoder.cs
- HyperLinkField.cs
- remotingproxy.cs
- XmlChildNodes.cs
- SamlAction.cs
- OracleCommandBuilder.cs
- SecurityTokenAttachmentMode.cs
- WebBrowserContainer.cs
- FixedDocumentSequencePaginator.cs
- ExceptionAggregator.cs
- StorageAssociationSetMapping.cs
- HtmlTextViewAdapter.cs
- MimeWriter.cs
- RegistryKey.cs
- StorageFunctionMapping.cs
- AbstractSvcMapFileLoader.cs
- CornerRadiusConverter.cs
- SystemColorTracker.cs
- QueryCreatedEventArgs.cs
- PropertyConverter.cs
- activationcontext.cs
- ObjectParameter.cs
- Setter.cs
- BezierSegment.cs
- ChannelCredentials.cs
- InitializerFacet.cs
- NamespaceDecl.cs
- PowerStatus.cs
- Pen.cs
- DataFormats.cs
- Wizard.cs
- FullTextState.cs
- BitmapFrameEncode.cs
- PathSegmentCollection.cs
- SecurityPermission.cs
- DataGridViewLinkCell.cs
- NameValueCache.cs
- MaterialGroup.cs
- XomlCompiler.cs
- EditorZoneBase.cs
- MtomMessageEncodingElement.cs
- NativeMethods.cs
- InstanceStore.cs
- NetStream.cs
- ImpersonateTokenRef.cs
- TableProvider.cs
- Lasso.cs
- NativeMethods.cs
- DataGridViewCellLinkedList.cs
- QueryCursorEventArgs.cs
- AttributeData.cs
- SystemColors.cs
- ConfigurationSection.cs
- EventRecord.cs
- ThreadExceptionDialog.cs
- InfiniteTimeSpanConverter.cs