//targetID is the messageID
        private void GetRoutingDetails(MessageRoutingDetails mrd, Guid targetID)
        {
            MessageFlow src   = mrd.Source; //the source
            ArrayList   dests = (ArrayList)mrd.Destinations;

            if (src != null)
            {
                Console.WriteLine("Source flow - InstanceID, StartTime, EndTime, ServiceName: ");
                Console.WriteLine(src.InstanceID + ", " + src.StartTime + ", " + src.EndTime + ", " + src.ServiceName);
            }

            Console.WriteLine();
            Console.WriteLine("Destination flows - InstanceID, StartTime, EndTime, ServiceName for each destination:  ");

            foreach (MessageFlow dest in dests)
            {
                Console.WriteLine(dest.InstanceID + ", " + dest.StartTime + ", " + dest.EndTime + ", " + dest.ServiceName);
            }
        }
        public void AccessMessageFlow(Guid trackingInstID)
        {
            PrintSampleName("AccessMessageFlow");

            MessageFlow flow = _operations.GetMessageFlow(trackingInstID);

            Console.WriteLine("Messageflow's instanceID: " + flow.InstanceID);
            Console.WriteLine();
            IEnumerable msgEvents = flow.MessageEvents;

            foreach (MessageEvent msgevent in msgEvents)
            {
                //Some message event properties:
                Console.Write("Message event details - MessageID, MessageSize, TimeStamp, EventType are: ");
                Console.WriteLine(msgevent.MessageID + ", " + msgevent.MessageSize + ", " + msgevent.Timestamp + ", " + msgevent.EventType);
                Console.WriteLine("Message routing details for this event are: ");
                MessageRoutingDetails mrd = msgevent.RoutingDetails;
                GetRoutingDetails(mrd, msgevent.MessageID);
                Console.WriteLine("----------");
            }
        }