//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.Workflow.Activities { using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.ServiceModel; using System.Xml; using System.ServiceModel.Dispatcher; [Serializable] internal sealed class ReceiveContext { static string emptyGuid = Guid.Empty.ToString(); Guid contextId = Guid.Empty; bool initialized = false; bool isRootContext = false; string name = null; SerializableReadOnlyDictionary properties = null; string workflowId = emptyGuid; public ReceiveContext(string name, Guid workflowId, bool isRootContext) { this.name = name; this.workflowId = workflowId.ToString(); this.isRootContext = isRootContext; } [Browsable(false)] public bool Initialized { get { return this.initialized; } } [Browsable(false)] public string Name { get { return this.name; } } [Browsable(false)] internal SerializableReadOnlyDictionary Properties { get { return this.properties; } } public void EnsureInitialized(Guid contextId) { if (this.contextId != contextId) { this.initialized = false; this.contextId = contextId; } if (this.Initialized) { return; } if (!isRootContext) { this.properties = new SerializableReadOnlyDictionary( new KeyValuePair(WellKnownContextProperties.InstanceId, workflowId), new KeyValuePair(WellKnownContextProperties.ConversationId, Guid.NewGuid().ToString())); } else { this.properties = new SerializableReadOnlyDictionary( new KeyValuePair(WellKnownContextProperties.InstanceId, workflowId)); } this.initialized = true; } } }