WorkflowClientDeliverMessageWrapper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Activities / WorkflowClientDeliverMessageWrapper.cs / 1305376 / WorkflowClientDeliverMessageWrapper.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.ServiceModel.Activities 
{
    using System.Collections.Generic; 
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime;
    using System.ServiceModel; 
    using System.ServiceModel.Activities.Description;
    using System.ServiceModel.Channels;
    using System.Workflow.Activities;
    using System.Workflow.Runtime; 
    using System.ServiceModel.Description;
    using System.ServiceModel.Diagnostics; 
 
    class WorkflowClientDeliverMessageWrapper : IDeliverMessage
    { 
        string baseUri;
        public WorkflowClientDeliverMessageWrapper(string baseUri)
        {
            this.baseUri = baseUri; 
        }
 
        public object[] PrepareEventArgsArray(object sender, ExternalDataEventArgs eventArgs, out object workItem, out IPendingWork workHandler) 
        {
            workItem = null; 
            workHandler = null;
            return new object[] { sender, eventArgs };
        }
        [SuppressMessage(FxCop.Category.Security, FxCop.Rule.AptcaMethodsShouldOnlyCallAptcaMethods, 
            Justification = "Calling into already shipped assembly; can't apply APTCA")]
        public void DeliverMessage(ExternalDataEventArgs eventArgs, IComparable queueName, object message, object workItem, IPendingWork workHandler) 
        { 
            if (eventArgs == null)
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("eventArgs");
            }
            if (queueName == null)
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("queueName");
            } 
 
            using (ExternalDataExchangeClient desClient = new ExternalDataExchangeClient(WorkflowRuntimeEndpoint.netNamedPipeContextBinding,
                new EndpointAddress(this.baseUri))) 
            {
                using (OperationContextScope scope = new OperationContextScope((IContextChannel)desClient.InnerChannel))
                {
                    IContextManager contextManager = desClient.InnerChannel.GetProperty(); 
                    Fx.Assert(contextManager != null, "IContextManager must not be null.");
                    if (contextManager != null) 
                    { 
                        IDictionary context = new Dictionary();
                        context["instanceId"] = eventArgs.InstanceId.ToString(); 
                        contextManager.SetContext(context);
                    }

                    desClient.RaiseEvent(eventArgs, queueName, message); 
                }
            } 
 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK