diff options
| author | Ted Ross <tross@apache.org> | 2010-06-25 22:35:28 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2010-06-25 22:35:28 +0000 |
| commit | 1ad4e43911c2db707619efb1c1f1b511ce401b9b (patch) | |
| tree | 3977935e5eee895a87ff3cf35de1437e5140bde9 /cpp/bindings | |
| parent | cea2762f31747d337e8ccd06a8bfdcf0be9bccc7 (diff) | |
| download | qpid-python-1ad4e43911c2db707619efb1c1f1b511ce401b9b.tar.gz | |
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
Diffstat (limited to 'cpp/bindings')
| -rw-r--r-- | cpp/bindings/qpid/dotnet/src/Session.cpp | 80 |
1 files changed, 74 insertions, 6 deletions
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;
}
|
