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
- NestedContainer.cs
- SoapSchemaMember.cs
- StickyNote.cs
- Wizard.cs
- OleDbErrorCollection.cs
- WorkflowWebService.cs
- DomainUpDown.cs
- ToolStripPanelCell.cs
- BrowserCapabilitiesCodeGenerator.cs
- HtmlWindowCollection.cs
- NameValueConfigurationCollection.cs
- IndexingContentUnit.cs
- FixedDSBuilder.cs
- Vector3DValueSerializer.cs
- TrustLevelCollection.cs
- RoleService.cs
- SafeLocalMemHandle.cs
- WmiInstallComponent.cs
- ChangePassword.cs
- SQLBinary.cs
- StoreAnnotationsMap.cs
- SmiEventStream.cs
- TemplatePartAttribute.cs
- ChangeBlockUndoRecord.cs
- RegistryKey.cs
- DesignerCapabilities.cs
- PointLightBase.cs
- TriggerActionCollection.cs
- AssertSection.cs
- Int64.cs
- ValidationSummary.cs
- WindowsListViewItemStartMenu.cs
- ToolConsole.cs
- ConnectionManagementSection.cs
- ServiceAppDomainAssociationProvider.cs
- StorageModelBuildProvider.cs
- AttachedPropertyMethodSelector.cs
- ListViewDataItem.cs
- DynamicActionMessageFilter.cs
- ListViewGroup.cs
- ProviderException.cs
- FileDialog_Vista.cs
- DBCSCodePageEncoding.cs
- XmlNodeList.cs
- CodeExpressionStatement.cs
- ReliableMessagingHelpers.cs
- AssociatedControlConverter.cs
- BlurBitmapEffect.cs
- DynamicResourceExtension.cs
- MetadataArtifactLoaderFile.cs
- ColorDialog.cs
- WriterOutput.cs
- OpCopier.cs
- precedingquery.cs
- QuaternionConverter.cs
- RectKeyFrameCollection.cs
- ArcSegment.cs
- MessageQueuePermissionEntry.cs
- RequiredAttributeAttribute.cs
- DoubleLink.cs
- Privilege.cs
- DbCommandDefinition.cs
- IEnumerable.cs
- AudioException.cs
- WrappedReader.cs
- ContextMenuStrip.cs
- ObjectDataSourceView.cs
- EntityDescriptor.cs
- ThousandthOfEmRealDoubles.cs
- NotifyInputEventArgs.cs
- Screen.cs
- SqlDataSourceSelectingEventArgs.cs
- ListView.cs
- ContainerFilterService.cs
- SystemResourceKey.cs
- UnlockInstanceAsyncResult.cs
- MenuItemCollection.cs
- FixUpCollection.cs
- TraceRecords.cs
- GridSplitterAutomationPeer.cs
- DesignerAdRotatorAdapter.cs
- GridViewEditEventArgs.cs
- SignedInfo.cs
- COM2TypeInfoProcessor.cs
- DuplicateWaitObjectException.cs
- BaseCAMarshaler.cs
- PersonalizationStateInfoCollection.cs
- SchemaNames.cs
- COM2PictureConverter.cs
- TreeNodeStyle.cs
- DatatypeImplementation.cs
- UnsupportedPolicyOptionsException.cs
- SafeFileHandle.cs
- LinkedList.cs
- ListSourceHelper.cs
- SwitchLevelAttribute.cs
- CalculatedColumn.cs
- StringPropertyBuilder.cs
- KeyToListMap.cs
- Function.cs