You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/06/15 19:51:11 UTC

svn commit: r954983 [2/2] - in /qpid/trunk/qpid/cpp/bindings/qpid/dotnet: ./ examples/csharp.direct.receiver/ examples/csharp.direct.sender/ examples/csharp.example.client/ examples/csharp.example.client/Properties/ examples/csharp.example.declare_queu...

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:commits-subscribe@qpid.apache.org