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
- TreeNodeEventArgs.cs
- MessageSecurityException.cs
- ResXFileRef.cs
- ClientConfigPaths.cs
- CorePropertiesFilter.cs
- ValidatingPropertiesEventArgs.cs
- AnnotationAuthorChangedEventArgs.cs
- InfoCardRSACryptoProvider.cs
- XmlNotation.cs
- SQLInt32Storage.cs
- XmlLangPropertyAttribute.cs
- CompoundFileStorageReference.cs
- HttpPostedFileWrapper.cs
- PartitionerQueryOperator.cs
- CodeVariableReferenceExpression.cs
- Point.cs
- VectorAnimationBase.cs
- RegistryConfigurationProvider.cs
- SoapFault.cs
- OdbcParameterCollection.cs
- XmlSchemaIdentityConstraint.cs
- ImageField.cs
- NameObjectCollectionBase.cs
- Formatter.cs
- InvalidPropValue.cs
- OutputScope.cs
- DataSet.cs
- ItemsControlAutomationPeer.cs
- StylusLogic.cs
- InputMethodStateChangeEventArgs.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- ObjectIDGenerator.cs
- TripleDESCryptoServiceProvider.cs
- NamespaceEmitter.cs
- OdbcException.cs
- StdValidatorsAndConverters.cs
- ArrayHelper.cs
- AppModelKnownContentFactory.cs
- ConnectionConsumerAttribute.cs
- UntypedNullExpression.cs
- EntityCommand.cs
- TextServicesHost.cs
- DataGridViewTextBoxCell.cs
- UnsupportedPolicyOptionsException.cs
- EdmItemCollection.cs
- DataControlFieldCell.cs
- SqlClientWrapperSmiStreamChars.cs
- EnumCodeDomSerializer.cs
- DependencySource.cs
- WindowsFormsHostPropertyMap.cs
- InternalBufferOverflowException.cs
- HtmlControlPersistable.cs
- SynchronizedKeyedCollection.cs
- ExpressionBuilderCollection.cs
- Sequence.cs
- DetailsViewPagerRow.cs
- FastPropertyAccessor.cs
- Camera.cs
- HttpResponse.cs
- LogAppendAsyncResult.cs
- GiveFeedbackEvent.cs
- WebZone.cs
- Geometry.cs
- CollectionChangeEventArgs.cs
- GenericTextProperties.cs
- PackageDigitalSignature.cs
- StorageModelBuildProvider.cs
- RewritingPass.cs
- TreeBuilderBamlTranslator.cs
- PrivilegedConfigurationManager.cs
- FunctionDescription.cs
- EmptyControlCollection.cs
- SigningCredentials.cs
- PasswordPropertyTextAttribute.cs
- UnorderedHashRepartitionStream.cs
- StringExpressionSet.cs
- SqlMethodTransformer.cs
- CodeAccessPermission.cs
- LowerCaseStringConverter.cs
- SHA256CryptoServiceProvider.cs
- Vector3DCollection.cs
- DataGridViewDataConnection.cs
- TimeManager.cs
- GeneralTransform3DCollection.cs
- PageThemeCodeDomTreeGenerator.cs
- Duration.cs
- TraceRecord.cs
- ITreeGenerator.cs
- ContentPropertyAttribute.cs
- FixedSOMPageConstructor.cs
- RegexNode.cs
- PointAnimation.cs
- LineBreakRecord.cs
- TextBoxBase.cs
- ConnectionInterfaceCollection.cs
- EntitySqlException.cs
- Misc.cs
- Pen.cs
- ZoneButton.cs
- BasicKeyConstraint.cs