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 --- .../csharp.example.drain/csharp.example.drain.cs | 4 +- cpp/bindings/qpid/dotnet/src/Receiver.cpp | 109 ++++++++++++++------- cpp/bindings/qpid/dotnet/src/Receiver.h | 10 +- 3 files changed, 79 insertions(+), 44 deletions(-) (limited to 'cpp') diff --git a/cpp/bindings/qpid/dotnet/examples/csharp.example.drain/csharp.example.drain.cs b/cpp/bindings/qpid/dotnet/examples/csharp.example.drain/csharp.example.drain.cs index 04a0764f7c..da8218bbf7 100644 --- a/cpp/bindings/qpid/dotnet/examples/csharp.example.drain/csharp.example.drain.cs +++ b/cpp/bindings/qpid/dotnet/examples/csharp.example.drain/csharp.example.drain.cs @@ -43,9 +43,9 @@ namespace Org.Apache.Qpid.Messaging.Examples { Duration timeout = options.Forever ? DurationConstants.FORVER : DurationConstants.SECOND * options.Timeout; - Message message; + Message message = new Message(); - while ((message = receiver.Fetch(timeout)) != null) + while (receiver.Fetch(ref message, timeout)) { Dictionary properties = new Dictionary(); properties = message.Properties; 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; + } // diff --git a/cpp/bindings/qpid/dotnet/src/Receiver.h b/cpp/bindings/qpid/dotnet/src/Receiver.h index ae32f6f4d3..123c266b55 100644 --- a/cpp/bindings/qpid/dotnet/src/Receiver.h +++ b/cpp/bindings/qpid/dotnet/src/Receiver.h @@ -99,18 +99,16 @@ namespace Messaging { } // Get(message) - // TBD - //bool Get(Message ^ mmsgp); - //bool Get(Message ^ mmsgp, Duration ^ durationp); + bool Get(Message ^% mmsgp); + bool Get(Message ^% mmsgp, Duration ^ durationp); // message = Get() Message ^ Get(); Message ^ Get(Duration ^ durationp); // Fetch(message) - // TBD - //bool Fetch(Message ^ mmsgp); - //bool Fetch(Message ^ mmsgp, Duration ^ duration); + bool Fetch(Message ^% mmsgp); + bool Fetch(Message ^% mmsgp, Duration ^ duration); // message = Fetch() Message ^ Fetch(); -- cgit v1.2.1