Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Activities / Description / WorkflowRuntimeEndpoint.cs / 1305376 / WorkflowRuntimeEndpoint.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Activities.Description { using System.Activities.Statements; using System.Collections.ObjectModel; using System.Diagnostics; using System.Globalization; using System.Runtime; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; using System.Runtime.DurableInstancing; using System.Collections.Generic; using System.Threading; using System.ServiceModel.Diagnostics; using System.Activities; public class WorkflowRuntimeEndpoint : WorkflowHostingEndpoint { static readonly Uri baseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/ExternalDataExchangeEndpoint/{0}/{1}", Process.GetCurrentProcess().Id, AppDomain.CurrentDomain.Id)); static int uriCounter = 0; internal static readonly Binding netNamedPipeContextBinding = new CustomBinding(new ContextBindingElement(), new BinaryMessageEncodingBindingElement(), new NamedPipeTransportBindingElement()) { Name = "ExternalDataExchangeBinding" }; WorkflowRuntimeServicesBehavior behavior; internal const string ExternalDataExchangeNamespace = "http://wf.microsoft.com/externaldataexchange/"; internal const string RaiseEventAction = "http://wf.microsoft.com/externaldataexchange/IExternalDataExchange/RaiseEvent"; public WorkflowRuntimeEndpoint() : base(typeof(IExternalDataExchange)) { base.Binding = netNamedPipeContextBinding; string endpointUri = String.Format(CultureInfo.InvariantCulture, "{0}/{1}", baseUri, Interlocked.Increment(ref uriCounter)); base.Address = new EndpointAddress(endpointUri); this.behavior = new WorkflowRuntimeServicesBehavior(); this.Behaviors.Add(behavior); } protected override Guid OnGetInstanceId(object[] inputs, OperationContext operationContext) { Fx.Assert(operationContext.IncomingMessageHeaders.Action == RaiseEventAction, "Message action is not RaiseEvent"); Guid instanceId = Guid.Empty; ContextMessageProperty contextMessageProperty; if (ContextMessageProperty.TryGet(operationContext.IncomingMessageProperties, out contextMessageProperty)) { string stringInstanceId = null; if (contextMessageProperty.Context.TryGetValue("instanceId", out stringInstanceId)) { Fx.TryCreateGuid(stringInstanceId, out instanceId); } } return instanceId; } protected override Bookmark OnResolveBookmark(object[] inputs, OperationContext operationContext, WorkflowHostingResponseContext responseContext, out object value) { Fx.Assert(operationContext.IncomingMessageHeaders.Action == RaiseEventAction, "Message action is not RaiseEvent"); Fx.Assert(inputs.Length >= 3, "Insufficient number of inputs"); Fx.Assert(inputs[1] is IComparable, "The queue name from ExternalDataExchangeService is not an IComparable object"); IComparable queueName = (IComparable)inputs[1]; value = inputs[2]; responseContext.SendResponse(null, null); return new Bookmark(queueName.ToString()); } public void AddService(object service) { behavior.AddService(service); } public void RemoveService(object service) { behavior.RemoveService(service); } public object GetService(Type serviceType) { return behavior.GetService(serviceType); } public T GetService() { return behavior.GetService (); } } } // 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
- Operator.cs
- Publisher.cs
- SerializationEventsCache.cs
- XhtmlTextWriter.cs
- IMembershipProvider.cs
- ImageBrush.cs
- ExpressionNormalizer.cs
- ImagingCache.cs
- ConfigXmlElement.cs
- DockProviderWrapper.cs
- RegexRunner.cs
- LineSegment.cs
- GestureRecognizer.cs
- InputProviderSite.cs
- TextDecorationCollectionConverter.cs
- LinqDataSourceView.cs
- DictionaryBase.cs
- SafeTokenHandle.cs
- SessionStateUtil.cs
- HandlerBase.cs
- SelectingProviderEventArgs.cs
- StorageConditionPropertyMapping.cs
- RoutedEvent.cs
- ProcessModule.cs
- CurrentTimeZone.cs
- NeutralResourcesLanguageAttribute.cs
- CodeAttributeDeclaration.cs
- Encoding.cs
- CodeCatchClauseCollection.cs
- PartialTrustVisibleAssemblyCollection.cs
- DesignTimeDataBinding.cs
- HashCodeCombiner.cs
- PropertiesTab.cs
- CacheChildrenQuery.cs
- SuppressIldasmAttribute.cs
- ToolstripProfessionalRenderer.cs
- SerializableAttribute.cs
- SqlConnectionFactory.cs
- DecimalAnimationBase.cs
- XmlCharCheckingWriter.cs
- QilCloneVisitor.cs
- EntityProxyTypeInfo.cs
- columnmapfactory.cs
- Stack.cs
- MsmqTransportBindingElement.cs
- UIElementPropertyUndoUnit.cs
- AtomPub10CategoriesDocumentFormatter.cs
- ProcessHostServerConfig.cs
- ListViewDataItem.cs
- UnsafeNativeMethods.cs
- ComponentManagerBroker.cs
- BuiltInExpr.cs
- WebPartConnectVerb.cs
- ListViewSortEventArgs.cs
- SplineQuaternionKeyFrame.cs
- AuthorizationRule.cs
- BuilderPropertyEntry.cs
- BufferAllocator.cs
- TextOutput.cs
- UnsafeNativeMethods.cs
- XmlElementAttributes.cs
- SqlDataSourceStatusEventArgs.cs
- BamlRecordWriter.cs
- MainMenu.cs
- TogglePattern.cs
- StylusPointProperties.cs
- CmsInterop.cs
- DataBinding.cs
- _FtpControlStream.cs
- SourceInterpreter.cs
- RoutedPropertyChangedEventArgs.cs
- SimpleBitVector32.cs
- HttpModuleAction.cs
- AsyncCompletedEventArgs.cs
- XmlBufferReader.cs
- TrustLevelCollection.cs
- RequestCachePolicyConverter.cs
- Win32MouseDevice.cs
- StronglyTypedResourceBuilder.cs
- GenericParameterDataContract.cs
- ObsoleteAttribute.cs
- SignedXml.cs
- CacheHelper.cs
- HttpHandlerActionCollection.cs
- FocusWithinProperty.cs
- NamespaceEmitter.cs
- LocatorGroup.cs
- OracleParameter.cs
- AddingNewEventArgs.cs
- CatchBlock.cs
- MetadataSource.cs
- CodeTypeReference.cs
- CaseExpr.cs
- DetailsViewPagerRow.cs
- TreeNode.cs
- SoapTypeAttribute.cs
- ByteKeyFrameCollection.cs
- FormCollection.cs
- TextCharacters.cs
- FloaterBaseParaClient.cs