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
- HandleTable.cs
- GenericUriParser.cs
- LinqDataSourceContextEventArgs.cs
- ColorTransform.cs
- XmlNode.cs
- Registry.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- VideoDrawing.cs
- TextPointerBase.cs
- log.cs
- RawStylusInputCustomDataList.cs
- COAUTHIDENTITY.cs
- ILGen.cs
- SQLRoleProvider.cs
- datacache.cs
- RectAnimationUsingKeyFrames.cs
- FixedSOMTableRow.cs
- SystemWebCachingSectionGroup.cs
- SspiWrapper.cs
- WmlValidatorAdapter.cs
- ItemsPanelTemplate.cs
- CodeSnippetCompileUnit.cs
- AddInControllerImpl.cs
- _LocalDataStore.cs
- MessageBox.cs
- Wizard.cs
- StringFreezingAttribute.cs
- FileDialog.cs
- Win32Exception.cs
- ManualWorkflowSchedulerService.cs
- DataGridItem.cs
- DBPropSet.cs
- MetadataPropertyvalue.cs
- PersistChildrenAttribute.cs
- CodeTypeReference.cs
- MatchingStyle.cs
- KeyValueSerializer.cs
- Soap.cs
- XmlChoiceIdentifierAttribute.cs
- Animatable.cs
- Freezable.cs
- _IPv4Address.cs
- ProtocolsConfigurationHandler.cs
- LowerCaseStringConverter.cs
- WindowsRichEditRange.cs
- SmtpTransport.cs
- SuppressedPackageProperties.cs
- HMACSHA512.cs
- WebPartCancelEventArgs.cs
- _CacheStreams.cs
- SingleStorage.cs
- SchemaHelper.cs
- CacheDependency.cs
- NetCodeGroup.cs
- ExpressionsCollectionConverter.cs
- PanelDesigner.cs
- SafeRightsManagementQueryHandle.cs
- ConfigurationSection.cs
- PenThreadPool.cs
- XmlEncoding.cs
- FormsAuthenticationCredentials.cs
- ContractBase.cs
- CharacterShapingProperties.cs
- ClientUtils.cs
- TextBox.cs
- FixedFindEngine.cs
- Sequence.cs
- LambdaCompiler.Unary.cs
- DocumentSchemaValidator.cs
- AutomationTextAttribute.cs
- QueryAccessibilityHelpEvent.cs
- dtdvalidator.cs
- ArgumentOutOfRangeException.cs
- RoleManagerModule.cs
- IHttpResponseInternal.cs
- RectConverter.cs
- ControlTemplate.cs
- TableStyle.cs
- MenuTracker.cs
- ManagementObjectCollection.cs
- NavigationFailedEventArgs.cs
- Claim.cs
- PathGeometry.cs
- LOSFormatter.cs
- TransactionManager.cs
- BaseResourcesBuildProvider.cs
- TextPenaltyModule.cs
- NativeMethods.cs
- TypeListConverter.cs
- FixUpCollection.cs
- SamlSerializer.cs
- RelationshipConverter.cs
- DbDataRecord.cs
- Misc.cs
- PtsHost.cs
- DiscoveryInnerClientAdhocCD1.cs
- DtdParser.cs
- GridViewCellAutomationPeer.cs
- PathGeometry.cs
- CollectionViewGroup.cs