From 1ad4e43911c2db707619efb1c1f1b511ce401b9b Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Fri, 25 Jun 2010 22:35:28 +0000 Subject: QPID-2589 - Patch from Chuck Rolke Re-do changes to Session.cpp. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@958141 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Session.cpp | 80 +++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 6 deletions(-) (limited to 'cpp/bindings/qpid/dotnet/src') diff --git a/cpp/bindings/qpid/dotnet/src/Session.cpp b/cpp/bindings/qpid/dotnet/src/Session.cpp index d5f4584a70..bafc9b3c76 100644 --- a/cpp/bindings/qpid/dotnet/src/Session.cpp +++ b/cpp/bindings/qpid/dotnet/src/Session.cpp @@ -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)) ); + System::Exception ^ newException = nullptr; + ::qpid::messaging::Sender * senderp = NULL; + Sender ^ newSender = nullptr; - Sender ^ newSender = gcnew Sender(&sender, this); + 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)) ); + System::Exception ^ newException = nullptr; + ::qpid::messaging::Receiver * receiverp = NULL; + Receiver ^ newReceiver = nullptr; + + try + { + receiverp = new ::qpid::messaging::Receiver; - Receiver ^ newReceiver = gcnew Receiver(&receiver, this); + *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; } -- cgit v1.2.1