From 163e89881464fb242461fdf769839f58f5b3a28f Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 15 Jun 2010 17:51:10 +0000 Subject: QPID-2589 - Patch from Chuck Rolke More API cleanup and new examples (to match the examples for other languages) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@954983 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Session.cpp | 102 ++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) (limited to 'cpp/bindings/qpid/dotnet/src/Session.cpp') diff --git a/cpp/bindings/qpid/dotnet/src/Session.cpp b/cpp/bindings/qpid/dotnet/src/Session.cpp index c8d85b00ee..04fbb61e87 100644 --- a/cpp/bindings/qpid/dotnet/src/Session.cpp +++ b/cpp/bindings/qpid/dotnet/src/Session.cpp @@ -27,6 +27,7 @@ #include "qpid/messaging/exceptions.h" #include "QpidMarshal.h" +#include "Address.h" #include "Session.h" #include "Connection.h" #include "Duration.h" @@ -205,6 +206,54 @@ namespace Messaging { Sender ^ Session::CreateSender (System::String ^ address) + { + System::Exception ^ newException = nullptr; + ::qpid::messaging::Sender * senderp = NULL; + Sender ^ newSender = nullptr; + + try + { + // allocate a native sender + ::qpid::messaging::Sender * senderp = new ::qpid::messaging::Sender ; + + // create the sender + *senderp = sessionp->::qpid::messaging::Session::createSender(QpidMarshal::ToNative(address)); + + // create a managed sender + 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; + } + + + Sender ^ Session::CreateSender (Address ^ address) { System::Exception ^ newException = nullptr; ::qpid::messaging::Sender * senderp = NULL; @@ -216,7 +265,7 @@ namespace Messaging { ::qpid::messaging::Sender * senderp = new ::qpid::messaging::Sender ; // create the sender - *senderp = sessionp->::qpid::messaging::Session::createSender(QpidMarshal::ToNative(address)); + *senderp = sessionp->::qpid::messaging::Session::createSender(*(address->NativeAddress)); // create a managed sender newSender = gcnew Sender(senderp, this); @@ -251,7 +300,8 @@ namespace Messaging { return newSender; } - Receiver ^ Session::CreateReceiver(System::String ^ address) + + Receiver ^ Session::CreateReceiver(System::String ^ address) { System::Exception ^ newException = nullptr; ::qpid::messaging::Receiver * receiverp = NULL; @@ -299,6 +349,54 @@ namespace Messaging { } + Receiver ^ Session::CreateReceiver(Address ^ address) + { + System::Exception ^ newException = nullptr; + ::qpid::messaging::Receiver * receiverp = NULL; + Receiver ^ newReceiver = nullptr; + + try + { + // allocate a native receiver + receiverp = new ::qpid::messaging::Receiver; + + // create the receiver + *receiverp = sessionp->createReceiver(*(address->NativeAddress)); + + // create a managed receiver + 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; + } + + Receiver ^ Session::CreateReceiver() { System::Exception ^ newException = nullptr; -- cgit v1.2.1