From b2c164cc932af306f4f74f306b680194e44b3dcf Mon Sep 17 00:00:00 2001 From: "Charles E. Rolke" Date: Mon, 3 Jan 2011 16:59:39 +0000 Subject: .NET Binding for Qpid Messaging: Add the boolean variation of Get() and Fetch(). Modify drain example to use the boolean Fetch. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1054684 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Receiver.cpp | 109 ++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 36 deletions(-) (limited to 'cpp/bindings/qpid/dotnet/src/Receiver.cpp') diff --git a/cpp/bindings/qpid/dotnet/src/Receiver.cpp b/cpp/bindings/qpid/dotnet/src/Receiver.cpp index ea612861e5..4c9062866d 100644 --- a/cpp/bindings/qpid/dotnet/src/Receiver.cpp +++ b/cpp/bindings/qpid/dotnet/src/Receiver.cpp @@ -121,24 +121,43 @@ namespace Messaging { // // Get(message) // - // TBD - //bool Receiver::Get(Message ^ mmsgp) - //{ - // return Get(mmsgp, DurationConstants::FORVER); - //} - // - //bool Receiver::Get(Message ^ mmsgp, Duration ^ durationp) - //{ - // ::qpid::messaging::Duration dur((*durationp).Milliseconds); - // - // ::qpid::messaging::Message tmpMsg; - // - // bool result = receiverp->Receiver::get(tmpMsg, dur); - // - // mmsgp = gcnew Message(tmpMsg); - // - // return result; - //} + bool Receiver::Get(Message ^% mmsgp) + { + return Get(mmsgp, DurationConstants::FORVER); + } + + bool Receiver::Get(Message ^% mmsgp, Duration ^ durationp) + { + System::Exception ^ newException = nullptr; + + try + { + ::qpid::messaging::Duration dur((*durationp).Milliseconds); + + ::qpid::messaging::Message tmpMsg; + + bool result = receiverp->Receiver::get(tmpMsg, dur); + + if (result) + { + mmsgp = gcnew Message(tmpMsg); + } + + return result; + } + catch (const ::qpid::types::Exception & error) + { + String ^ errmsg = gcnew String(error.what()); + newException = gcnew QpidException(errmsg); + } + + if (newException != nullptr) + { + throw newException; + } + + return false; + } // // message = Get() @@ -192,24 +211,42 @@ namespace Messaging { // // Fetch(message) // - // TBD - //bool Receiver::Fetch(Message ^ mmsgp) - //{ - // return Fetch(mmsgp, DurationConstants::FORVER); - //} - // - //bool Receiver::Fetch(Message ^ mmsgp, Duration ^ durationp) - //{ - // ::qpid::messaging::Duration dur((*durationp).Milliseconds); - // - // ::qpid::messaging::Message tmpMsg; - // - // bool result = receiverp->Receiver::fetch(tmpMsg, dur); - // - // mmsgp = gcnew Message(tmpMsg); - // - // return result; - //} + bool Receiver::Fetch(Message ^% mmsgp) + { + return Fetch(mmsgp, DurationConstants::FORVER); + } + + bool Receiver::Fetch(Message ^% mmsgp, Duration ^ durationp) + { + System::Exception ^ newException = nullptr; + + try + { + ::qpid::messaging::Duration dur((*durationp).Milliseconds); + + ::qpid::messaging::Message tmpMsg; + + bool result = receiverp->Receiver::fetch(tmpMsg, dur); + + if (result) + { + mmsgp = gcnew Message(tmpMsg); + } + + return result; + } + catch (const ::qpid::types::Exception & error) + { + String ^ errmsg = gcnew String(error.what()); + newException = gcnew QpidException(errmsg); + } + if (newException != nullptr) + { + throw newException; + } + + return false; + } // -- cgit v1.2.1