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
- SecurityPermission.cs
- Section.cs
- LinkTarget.cs
- StorageEndPropertyMapping.cs
- util.cs
- StringArrayConverter.cs
- PolyLineSegment.cs
- EnumValAlphaComparer.cs
- InputReportEventArgs.cs
- TransformDescriptor.cs
- SmtpNegotiateAuthenticationModule.cs
- DeclarationUpdate.cs
- SelectionItemPattern.cs
- TextParagraphProperties.cs
- FragmentQueryKB.cs
- Matrix3DValueSerializer.cs
- CodeNamespaceCollection.cs
- ConfigurationLoader.cs
- CheckBoxRenderer.cs
- IfElseDesigner.xaml.cs
- CommandPlan.cs
- AuthenticationModuleElement.cs
- FloaterParaClient.cs
- Schema.cs
- MutableAssemblyCacheEntry.cs
- StackOverflowException.cs
- TimelineCollection.cs
- ExtractCollection.cs
- OdbcConnection.cs
- InternalCache.cs
- SqlError.cs
- ToggleProviderWrapper.cs
- MenuEventArgs.cs
- TableItemStyle.cs
- PixelFormatConverter.cs
- DataGridRow.cs
- BitmapEffectCollection.cs
- MouseGestureValueSerializer.cs
- Knowncolors.cs
- RequestReplyCorrelator.cs
- TcpTransportSecurity.cs
- SevenBitStream.cs
- PresentationTraceSources.cs
- ValidationSummary.cs
- coordinator.cs
- CultureInfo.cs
- ToolStripPanelCell.cs
- SelectedGridItemChangedEvent.cs
- DataServiceRequest.cs
- SplineKeyFrames.cs
- BeginStoryboard.cs
- RoleServiceManager.cs
- GeneralTransform2DTo3D.cs
- UpdateExpressionVisitor.cs
- XmlNamespaceMappingCollection.cs
- FillRuleValidation.cs
- IntSecurity.cs
- InvalidPrinterException.cs
- ChangePasswordDesigner.cs
- WebEventTraceProvider.cs
- ModelTreeManager.cs
- SingleTagSectionHandler.cs
- DragEventArgs.cs
- DataPagerCommandEventArgs.cs
- XmlWellformedWriter.cs
- ZipIOLocalFileDataDescriptor.cs
- OdbcConnectionString.cs
- AppDomainFactory.cs
- TextRangeEdit.cs
- OleDragDropHandler.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ipaddressinformationcollection.cs
- DtdParser.cs
- PropertyInformation.cs
- TextLineResult.cs
- AsyncOperationContext.cs
- FixedSOMPageElement.cs
- DefaultParameterValueAttribute.cs
- GroupDescription.cs
- DataTableMappingCollection.cs
- VirtualDirectoryMapping.cs
- GridPatternIdentifiers.cs
- ConfigurationSchemaErrors.cs
- WeakHashtable.cs
- RawStylusInputCustomData.cs
- ClientEventManager.cs
- MDIClient.cs
- ViewManager.cs
- SiteMapPathDesigner.cs
- FrameworkElement.cs
- ColorConverter.cs
- XmlEnumAttribute.cs
- ProfileParameter.cs
- RtType.cs
- CommonDialog.cs
- XmlWriterSettings.cs
- AssertSection.cs
- VisualStateGroup.cs
- ProviderCommandInfoUtils.cs
- XmlQueryTypeFactory.cs