Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/org.apache.qpid.messaging.sln URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/org.apache.qpid.messaging.sln?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/org.apache.qpid.messaging.sln (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/org.apache.qpid.messaging.sln Tue Jun 15 17:51:10 2010 @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "org.apache.qpid.messaging", "src\org.apache.qpid.messaging.vcproj", "{AA5A3B83-5F98-406D-A01C-5A921467A57D}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Org.Apache.Qpid.Messaging", "src\org.apache.qpid.messaging.vcproj", "{AA5A3B83-5F98-406D-A01C-5A921467A57D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{34C477FB-B0CC-4AB9-A346-EA7B055469AC}" EndProject @@ -43,6 +43,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.map.callback.sender", "examples\csharp.map.callback.sender\csharp.map.callback.sender.csproj", "{12F1C14F-5C7D-4075-9BAE-C091394FF99A}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client-Server", "Client-Server", "{9232212E-F3C6-4D18-8D25-0C31DD5FF3DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.example.client", "examples\csharp.example.client\csharp.example.client.csproj", "{0DE01712-C2D1-4CA4-B42C-5856456A8696}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.example.server", "examples\csharp.example.server\csharp.example.server.csproj", "{090A081D-E8B5-4949-AA43-EE182B7101E3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Drain-Spout", "Drain-Spout", "{89CE04CB-21DE-4ABB-9236-50529DD8C022}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.example.drain", "examples\csharp.example.drain\csharp.example.drain.csproj", "{C43DEB69-8088-420B-B0CA-C699535E6D08}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.example.spout", "examples\csharp.example.spout\csharp.example.spout.csproj", "{EB36626D-36C2-41B3-B65E-762BAF27F137}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp.example.declare_queues", "examples\csharp.example.declare_queues\csharp.example.declare_queues.csproj", "{E31B349C-830C-4583-8BD9-30DA4398349F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -180,6 +194,76 @@ Global {12F1C14F-5C7D-4075-9BAE-C091394FF99A}.Release|Win32.ActiveCfg = Release|Any CPU {12F1C14F-5C7D-4075-9BAE-C091394FF99A}.Release|x86.ActiveCfg = Release|x86 {12F1C14F-5C7D-4075-9BAE-C091394FF99A}.Release|x86.Build.0 = Release|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|Win32.ActiveCfg = Debug|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|x86.ActiveCfg = Debug|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Debug|x86.Build.0 = Debug|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|Any CPU.Build.0 = Release|Any CPU + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|Mixed Platforms.Build.0 = Release|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|Win32.ActiveCfg = Release|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|x86.ActiveCfg = Release|x86 + {0DE01712-C2D1-4CA4-B42C-5856456A8696}.Release|x86.Build.0 = Release|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|Win32.ActiveCfg = Debug|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|x86.ActiveCfg = Debug|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Debug|x86.Build.0 = Debug|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|Any CPU.Build.0 = Release|Any CPU + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|Mixed Platforms.Build.0 = Release|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|Win32.ActiveCfg = Release|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|x86.ActiveCfg = Release|x86 + {090A081D-E8B5-4949-AA43-EE182B7101E3}.Release|x86.Build.0 = Release|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|Win32.ActiveCfg = Debug|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|x86.ActiveCfg = Debug|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Debug|x86.Build.0 = Debug|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|Any CPU.Build.0 = Release|Any CPU + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|Mixed Platforms.Build.0 = Release|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|Win32.ActiveCfg = Release|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|x86.ActiveCfg = Release|x86 + {C43DEB69-8088-420B-B0CA-C699535E6D08}.Release|x86.Build.0 = Release|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|Win32.ActiveCfg = Debug|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|x86.ActiveCfg = Debug|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Debug|x86.Build.0 = Debug|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|Any CPU.Build.0 = Release|Any CPU + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|Mixed Platforms.Build.0 = Release|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|Win32.ActiveCfg = Release|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|x86.ActiveCfg = Release|x86 + {EB36626D-36C2-41B3-B65E-762BAF27F137}.Release|x86.Build.0 = Release|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|Win32.ActiveCfg = Debug|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|x86.ActiveCfg = Debug|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Debug|x86.Build.0 = Debug|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|Any CPU.Build.0 = Release|Any CPU + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|Mixed Platforms.Build.0 = Release|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|Win32.ActiveCfg = Release|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|x86.ActiveCfg = Release|x86 + {E31B349C-830C-4583-8BD9-30DA4398349F}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -188,6 +272,8 @@ Global {DE58D329-10DC-4C8D-9EFA-230A57314089} = {34C477FB-B0CC-4AB9-A346-EA7B055469AC} {878FDDF8-A870-41D6-9E36-0A050EC5ACAB} = {34C477FB-B0CC-4AB9-A346-EA7B055469AC} {E99FEFEE-B866-4BBA-9AA3-79DDF1C92960} = {34C477FB-B0CC-4AB9-A346-EA7B055469AC} + {9232212E-F3C6-4D18-8D25-0C31DD5FF3DB} = {34C477FB-B0CC-4AB9-A346-EA7B055469AC} + {89CE04CB-21DE-4ABB-9236-50529DD8C022} = {34C477FB-B0CC-4AB9-A346-EA7B055469AC} {7B71CE78-8E78-4632-ADBE-F4D5DFAE0068} = {DE58D329-10DC-4C8D-9EFA-230A57314089} {52F880E7-D677-4C91-8516-D679CE0F46A8} = {DE58D329-10DC-4C8D-9EFA-230A57314089} {AF2FBC78-266C-430C-BC29-9477AB596A36} = {39E9D1BF-3A0B-4D86-BF6B-F463E1A2245A} @@ -195,5 +281,10 @@ Global {AD9E53D7-DB10-4DA2-84D2-A81BE09B04E9} = {E99FEFEE-B866-4BBA-9AA3-79DDF1C92960} {68A43817-2358-4A31-8FDF-FE21722BFBCF} = {E99FEFEE-B866-4BBA-9AA3-79DDF1C92960} {12F1C14F-5C7D-4075-9BAE-C091394FF99A} = {E99FEFEE-B866-4BBA-9AA3-79DDF1C92960} + {0DE01712-C2D1-4CA4-B42C-5856456A8696} = {9232212E-F3C6-4D18-8D25-0C31DD5FF3DB} + {090A081D-E8B5-4949-AA43-EE182B7101E3} = {9232212E-F3C6-4D18-8D25-0C31DD5FF3DB} + {C43DEB69-8088-420B-B0CA-C699535E6D08} = {89CE04CB-21DE-4ABB-9236-50529DD8C022} + {EB36626D-36C2-41B3-B65E-762BAF27F137} = {89CE04CB-21DE-4ABB-9236-50529DD8C022} + {E31B349C-830C-4583-8BD9-30DA4398349F} = {89CE04CB-21DE-4ABB-9236-50529DD8C022} EndGlobalSection EndGlobal
Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp Tue Jun 15 17:51:10 2010 @@ -24,6 +24,7 @@ #include <string> #include <limits> #include <iostream> +#include <stdlib.h> #include "qpid/messaging/Message.h" #include "qpid/types/Variant.h" @@ -100,6 +101,25 @@ namespace Messaging { } } + + // Create from bytes + Message::Message(array<System::Byte> ^ bytes) + { + pin_ptr<unsigned char> pBytes = &bytes[0]; + messagep = new ::qpid::messaging::Message((char *)pBytes, bytes->Length); + } + + // Create from byte array slice + Message::Message(array<System::Byte> ^ bytes, int offset, int size) + { + if ((offset + size) > bytes->Length) + throw gcnew QpidException("Message::Message Create from byte array slice: buffer length exceeded"); + + pin_ptr<unsigned char> pBytes = &bytes[offset]; + messagep = new ::qpid::messaging::Message((char *)pBytes, size); + } + + // Create from received message Message::Message(::qpid::messaging::Message * msgp) : messagep(msgp) @@ -278,7 +298,7 @@ namespace Messaging { messagep->setRedelivered(redelivered); } - + // Properties System::Collections::Generic::Dictionary< System::String^, System::Object^> ^ Message::GetProperties() { @@ -297,7 +317,29 @@ namespace Messaging { } - void Message::SetContent(System::String ^ content) + void Message::SetProperty(System::String ^ name, System::Object ^ value) + { + ::qpid::types::Variant entryValue; + TypeTranslator::ManagedToNativeObject(value, entryValue); + + messagep->getProperties()[QpidMarshal::ToNative(name)] = entryValue; + } + + + void Message::SetProperties(System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^ properties) + { + for each (System::Collections::Generic::KeyValuePair + <System::String^, System::Object^> kvp in properties) + { + SetProperty(kvp.Key, kvp.Value); + } + } + + + + // Content + void Message::SetContent(System::String ^ content) { messagep->setContent(QpidMarshal::ToNative(content)); } @@ -342,8 +384,9 @@ namespace Messaging { } // - // User wants content as bytes. - // result array must be correct size already + // Return message content to raw byte array. + // On entry message size must not be zero and + // caller's byte array must be equal to message size. // void Message::GetRaw(array<System::Byte> ^ arr) { @@ -353,21 +396,98 @@ namespace Messaging { throw gcnew QpidException("Message::GetRaw - message size is zero"); if (arr->Length != size) - throw gcnew QpidException("Message::GetRaw - receive buffer is too small"); + throw gcnew QpidException("Message::GetRaw - receive buffer is wrong size"); + + const char * pMsgSrc = messagep->getContentPtr(); + pin_ptr<unsigned char> pArr = &arr[0]; + memcpy(pArr, pMsgSrc, size); + } + - const char * ptr = messagep->getContentPtr(); + System::UInt64 Message::GetContentSize() + { + return messagep->getContentSize(); + } - // TODO: System::Runtime::InteropServices::Marshal::Copy(ptr, arr, 0, size); - for (UInt32 i = 0; i < size; i++) + System::String ^ Message::MapAsString(System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^ dict) + { + System::String ^ leading = ""; + System::Text::StringBuilder ^ sb = gcnew System::Text::StringBuilder("{"); + + for each (System::Collections::Generic::KeyValuePair + <System::String^, System::Object^> kvp in dict) { - arr[i] = ptr[i]; + sb->Append(leading); + leading = ", "; + + if (QpidTypeCheck::ObjectIsMap(kvp.Value)) + { + sb->AppendFormat( + "{0}={1}", + kvp.Key, + MapAsString((System::Collections::Generic::Dictionary<System::String^, System::Object^> ^)kvp.Value)); + } + else if (QpidTypeCheck::ObjectIsList(kvp.Value)) + { + sb->AppendFormat( + "{0}={1}", + kvp.Key, + ListAsString((System::Collections::ObjectModel::Collection< + System::Object^> ^)kvp.Value)); + } + else + sb->AppendFormat("{0}={1}", kvp.Key, kvp.Value); } - } + sb->Append("}"); + System::String ^ result = gcnew System::String(sb->ToString()); + return result; + } - System::UInt64 Message::GetContentSize() + /// <summary> + /// A function to display a ampq/list message packaged as a List. + /// </summary> + /// <param name="list">The AMQP list</param> + System::String ^ Message::ListAsString(System::Collections::ObjectModel::Collection<System::Object^> ^ list) { - return messagep->getContentSize(); + System::String ^ leading = ""; + System::Text::StringBuilder ^ sb = gcnew System::Text::StringBuilder("["); + + for each (System::Object ^ obj in list) + { + sb->Append(leading); + leading = ", "; + + if (QpidTypeCheck::ObjectIsMap(obj)) + { + sb->Append(MapAsString((System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^)obj)); + } + else if (QpidTypeCheck::ObjectIsList(obj)) + { + sb->Append(ListAsString((System::Collections::ObjectModel::Collection< + System::Object^> ^)obj)); + } + else + sb->Append(obj->ToString()); + } + sb->Append("]"); + + System::String ^ result = gcnew System::String(sb->ToString()); + return result; } + + System::String ^ Message::AsString(System::Object ^ obj) + { + if (QpidTypeCheck::ObjectIsMap(obj)) + return MapAsString((System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^)obj); + else if (QpidTypeCheck::ObjectIsList(obj)) + return ListAsString((System::Collections::ObjectModel::Collection< + System::Object^> ^)obj); + else + return obj->ToString(); + } }}}} Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.h?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.h (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.h Tue Jun 15 17:51:10 2010 @@ -58,8 +58,11 @@ namespace Messaging { // Create from object Message(System::Object ^ theValue); - // TODO: Create from bytes - // Message(System::Byte [] ^ bytes); + // Create from byte array + Message(array<System::Byte> ^ bytes); + + // Create from byte array slice + Message(array<System::Byte> ^ bytes, int offset, int size); // Create from received message Message(::qpid::messaging::Message * msgp); @@ -108,6 +111,11 @@ namespace Messaging { System::Collections::Generic::Dictionary< System::String^, System::Object^> ^ GetProperties(); + void SetProperty(System::String ^ name, System::Object ^ value); + + void SetProperties(System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^ properties); + void SetContent(System::String ^ content); //TODO:: void setContent(Bytes{} bytes, offset, length); @@ -129,6 +137,16 @@ namespace Messaging { System::UInt64 GetContentSize(); + // A message has been returned to managed code through GetContent(). + // Display the content of that System::Object as a string. + System::String ^ AsString(System::Object ^ obj); + + System::String ^ MapAsString(System::Collections::Generic::Dictionary< + System::String^, System::Object^> ^ dict); + + System::String ^ ListAsString(System::Collections::ObjectModel::Collection< + System::Object^> ^ list); + //TODO: EncodingException // Note: encode/decode functions are in TypeTranslator Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.cpp Tue Jun 15 17:51:10 2010 @@ -27,6 +27,7 @@ #include "qpid/messaging/exceptions.h" #include "QpidMarshal.h" +#include "Address.h" #include "Session.h" #include "Connection.h" #include "Duration.h" @@ -207,6 +208,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; Sender ^ newSender = nullptr; @@ -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; Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.h?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.h (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/Session.h Tue Jun 15 17:51:10 2010 @@ -45,6 +45,7 @@ namespace Messaging { /// Session is a managed wrapper for a ::qpid::messaging::Session /// </summary> + ref class Address; ref class Connection; ref class Duration; ref class Receiver; @@ -99,8 +100,11 @@ namespace Messaging { Receiver ^ NextReceiver(Duration ^ timeout); - Sender ^ CreateSender (System::String ^ address); + Sender ^ CreateSender(System::String ^ address); + Sender ^ CreateSender(Address ^ address); + Receiver ^ CreateReceiver(System::String ^ address); + Receiver ^ CreateReceiver(Address ^ address); Receiver ^ CreateReceiver(); Sender ^ GetSender(System::String ^ name); Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/sessionreceiver/org.apache.qpid.messaging.sessionreceiver.csproj URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/sessionreceiver/org.apache.qpid.messaging.sessionreceiver.csproj?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/sessionreceiver/org.apache.qpid.messaging.sessionreceiver.csproj (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/src/sessionreceiver/org.apache.qpid.messaging.sessionreceiver.csproj Tue Jun 15 17:51:10 2010 @@ -3,7 +3,7 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>9.0.30729</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{B0A51CEC-30A2-4C2E-90BE-AE95107EAA05}</ProjectGuid> <OutputType>Library</OutputType> @@ -67,7 +67,7 @@ <ItemGroup> <ProjectReference Include="..\org.apache.qpid.messaging.vcproj"> <Project>{AA5A3B83-5F98-406D-A01C-5A921467A57D}</Project> - <Name>org.apache.qpid.messaging</Name> + <Name>Org.Apache.Qpid.Messaging</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.cs URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.cs?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.cs (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.cs Tue Jun 15 17:51:10 2010 @@ -83,6 +83,37 @@ namespace Org.Apache.Qpid.Messaging Console.WriteLine("Got raw array size {0}", m2Size); for (UInt64 i = 0; i < m2Size; i++) Console.Write("{0} ", myRaw[i].ToString()); + Console.WriteLine(); + + // + // Raw message creation + // + byte[] rawData = new byte[10]; + for (byte i=0; i<10; i++) + rawData[i] = i; + Message m3 = new Message(rawData); + + byte[] rawDataReadback = new byte[m3.GetContentSize()]; + m3.GetRaw(rawDataReadback); + for (UInt64 i = 0; i < m3.GetContentSize(); i++) + Console.Write("{0} ", rawDataReadback[i].ToString()); + Console.WriteLine(); + + // + // Raw message from array slice + // + byte[] rawData4 = new byte[256]; + for (int i = 0; i <= 255; i++) + rawData4[i] = (byte)i; + + Message m4 = new Message(rawData4, 246, 10); + + byte[] rawDataReadback4 = new byte[m4.GetContentSize()]; + m4.GetRaw(rawDataReadback4); + for (UInt64 i = 0; i < m4.GetContentSize(); i++) + Console.Write("{0} ", rawDataReadback4[i].ToString()); + Console.WriteLine(); + } } } Modified: qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.csproj URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.csproj?rev=954983&r1=954982&r2=954983&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.csproj (original) +++ qpid/trunk/qpid/cpp/bindings/qpid/dotnet/test/messaging.test/messaging.test.csproj Tue Jun 15 17:51:10 2010 @@ -3,7 +3,7 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>9.0.30729</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{AF2FBC78-266C-430C-BC29-9477AB596A36}</ProjectGuid> <OutputType>Exe</OutputType> @@ -67,7 +67,7 @@ <ItemGroup> <ProjectReference Include="..\..\src\org.apache.qpid.messaging.vcproj"> <Project>{AA5A3B83-5F98-406D-A01C-5A921467A57D}</Project> - <Name>org.apache.qpid.messaging</Name> + <Name>Org.Apache.Qpid.Messaging</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
