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
- XamlTemplateSerializer.cs
- RuntimeConfigLKG.cs
- ExpressionBuilder.cs
- Adorner.cs
- SQLString.cs
- NamedElement.cs
- StatusBarDrawItemEvent.cs
- NumberAction.cs
- TemplateKeyConverter.cs
- FormView.cs
- SamlDoNotCacheCondition.cs
- HostnameComparisonMode.cs
- ByteFacetDescriptionElement.cs
- KeyPullup.cs
- ConfigurationSectionGroupCollection.cs
- ContainerFilterService.cs
- TypeUnloadedException.cs
- WindowsHyperlink.cs
- COM2EnumConverter.cs
- CacheVirtualItemsEvent.cs
- PropertyNames.cs
- ConfigXmlReader.cs
- RequestTimeoutManager.cs
- TextViewSelectionProcessor.cs
- TextServicesDisplayAttribute.cs
- MDIWindowDialog.cs
- ImageField.cs
- UriExt.cs
- UrlPropertyAttribute.cs
- ReadOnlyHierarchicalDataSourceView.cs
- HtmlInputImage.cs
- LabelLiteral.cs
- SecondaryIndexList.cs
- PageAdapter.cs
- MessageVersion.cs
- ToolBar.cs
- EnlistmentTraceIdentifier.cs
- OAVariantLib.cs
- TriggerActionCollection.cs
- StatusBarItem.cs
- DynamicMetaObject.cs
- dsa.cs
- DefaultValueConverter.cs
- SQLDateTime.cs
- IdentityManager.cs
- PageHandlerFactory.cs
- XmlTextReaderImpl.cs
- RenderCapability.cs
- ProviderConnectionPointCollection.cs
- XmlCharacterData.cs
- ResourceDefaultValueAttribute.cs
- DbException.cs
- ServiceObjectContainer.cs
- securitymgrsite.cs
- WasHttpModulesInstallComponent.cs
- CompiledIdentityConstraint.cs
- PersonalizationEntry.cs
- ExitEventArgs.cs
- Label.cs
- HttpApplicationStateBase.cs
- SecurityToken.cs
- DataShape.cs
- EventMap.cs
- ColorConvertedBitmap.cs
- ColumnPropertiesGroup.cs
- AttributeEmitter.cs
- CertificateReferenceElement.cs
- ExponentialEase.cs
- GridViewDeleteEventArgs.cs
- FormViewInsertedEventArgs.cs
- TaskFileService.cs
- XsdBuilder.cs
- webproxy.cs
- CodeTypeReferenceExpression.cs
- AssertUtility.cs
- LabelLiteral.cs
- SQLBoolean.cs
- HTMLTagNameToTypeMapper.cs
- BindingRestrictions.cs
- TreeViewTemplateSelector.cs
- WaitHandleCannotBeOpenedException.cs
- StorageAssociationTypeMapping.cs
- DataGridViewImageColumn.cs
- CategoryEditor.cs
- HtmlProps.cs
- HealthMonitoringSection.cs
- DebugManager.cs
- basemetadatamappingvisitor.cs
- Barrier.cs
- SqlInternalConnectionTds.cs
- PageContentAsyncResult.cs
- SkinBuilder.cs
- Internal.cs
- CubicEase.cs
- BuildManager.cs
- StringWriter.cs
- RuleValidation.cs
- HandleDictionary.cs
- JsonClassDataContract.cs
- CodeDirectionExpression.cs