// Use this to send out directly
 public void Send(Message m, string uri, string destination)
 {
     try
     {
         m_perfectPointToPoint.Send(m, uri);
     }
     catch
     {
         m_deferredSendDestination.Add (destination);
         m_deferredSendMessages.Add (m);
         DebugInfo ("Adding to deferred queue type:{0}, dst:{1}, size:{2}",m.GetMessageType (), destination, m_deferredSendMessages.Count);
     }
 }
        public void Deliver(Message m)
        {
            DebugInfo ("Got: {0}", m.GetType());

            // Extract the message type from the message
            // and look for corresponding protocol handler
            // in the registerMap
            if (m_registerReceiveMap.ContainsKey (m.GetMessageType ()))
            {
                DebugInfo ("Received {0} message", m.GetMessageType ());
                m_registerReceiveMap [m.GetMessageType ()] (new ReceiveMessageEventArgs (m));
            }
            else
            {
                DebugFatal ("Received a message with an unknown type");
            }
        }