You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/06/26 00:35:28 UTC

svn commit: r958141 - /qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp

Author: tross
Date: Fri Jun 25 22:35:28 2010
New Revision: 958141

URL: http://svn.apache.org/viewvc?rev=958141&view=rev
Log:
QPID-2589 - Patch from Chuck Rolke
Re-do changes to Session.cpp.

Modified:
    qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp

Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp?rev=958141&r1=958140&r2=958141&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp Fri Jun 25 22:35:28 2010
@@ -445,10 +445,44 @@ namespace Messaging {
 
     Sender ^ Session::GetSender(System::String ^ name)
     {
-        ::qpid::messaging::Sender sender = ::qpid::messaging::Sender(
-            sessionp->::qpid::messaging::Session::getSender(QpidMarshal::ToNative(name)) );
-
-        Sender ^ newSender = gcnew Sender(&sender, this);
+        System::Exception           ^ newException = nullptr;
+        ::qpid::messaging::Sender   * senderp      = NULL;
+        Sender                      ^ newSender    = nullptr;
+
+        try
+        {
+            senderp = new ::qpid::messaging::Sender;
+
+            *senderp = sessionp->::qpid::messaging::Session::getSender(QpidMarshal::ToNative(name));
+
+            newSender = gcnew Sender(senderp, this);
+        } 
+        catch (const ::qpid::types::Exception & error) 
+        {
+            String ^ errmsg = gcnew String(error.what());
+            newException    = gcnew QpidException(errmsg);
+        }
+        finally 
+		{
+            if (newException != nullptr)
+			{
+				if (newSender != nullptr)
+				{
+					delete newSender;
+				}
+				else
+				{
+					if (senderp != NULL)
+					{
+						delete senderp;
+					}
+				}
+            }
+        }
+        if (newException != nullptr) 
+		{
+	        throw newException;
+		}
 
         return newSender;
     }
@@ -457,10 +491,44 @@ namespace Messaging {
 
     Receiver ^ Session::GetReceiver(System::String ^ name)
     {
-        ::qpid::messaging::Receiver receiver = ::qpid::messaging::Receiver(
-            sessionp->::qpid::messaging::Session::getReceiver(QpidMarshal::ToNative(name)) );
-
-        Receiver ^ newReceiver = gcnew Receiver(&receiver, this);
+        System::Exception           ^ newException = nullptr;
+        ::qpid::messaging::Receiver * receiverp    = NULL;
+        Receiver                    ^ newReceiver  = nullptr;
+
+        try
+        {
+            receiverp = new ::qpid::messaging::Receiver;
+
+            *receiverp = sessionp->::qpid::messaging::Session::getReceiver(QpidMarshal::ToNative(name));
+
+            newReceiver = gcnew Receiver(receiverp, this);
+        } 
+        catch (const ::qpid::types::Exception & error) 
+        {
+            String ^ errmsg = gcnew String(error.what());
+            newException    = gcnew QpidException(errmsg);
+        }
+        finally 
+		{
+            if (newException != nullptr)
+			{
+				if (newReceiver != nullptr)
+				{
+					delete newReceiver;
+				}
+				else
+				{
+					if (receiverp != NULL)
+					{
+						delete receiverp;
+					}
+				}
+            }
+        }
+        if (newException != nullptr) 
+		{
+	        throw newException;
+		}
 
         return newReceiver;
     }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org