You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2009/11/05 00:17:12 UTC
svn commit: r832900 -
/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs
Author: tabish
Date: Wed Nov 4 23:17:11 2009
New Revision: 832900
URL: http://svn.apache.org/viewvc?rev=832900&view=rev
Log:
* PrimitiveMap.cs:
Add methods for marshaling and unmarshaling a PrimitiveMap directly via a Stream object. This allows the resultant data to be compressed, encrypted or otherwise encoded without the PrimitiveMap needing to know about any of that.
Modified:
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs
Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs?rev=832900&r1=832899&r2=832900&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/PrimitiveMap.cs Wed Nov 4 23:17:11 2009
@@ -294,6 +294,24 @@
return answer;
}
+ /// <summary>
+ /// Unmarshals a PrimitiveMap directly from a Stream object. This
+ /// allows for clients to read PrimitiveMaps from Compressed or other
+ /// wise encoded streams without this class needing to know about it.
+ /// </summary>
+ /// <param name="source">
+ /// A <see cref="Stream"/>
+ /// </param>
+ /// <returns>
+ /// A <see cref="PrimitiveMap"/>
+ /// </returns>
+ public static PrimitiveMap Unmarshal(Stream source)
+ {
+ PrimitiveMap answer = new PrimitiveMap();
+ answer.dictionary = UnmarshalPrimitiveMap(source);
+ return answer;
+ }
+
public byte[] Marshal()
{
lock(dictionary.SyncRoot)
@@ -303,6 +321,23 @@
}
/// <summary>
+ /// Marshals a PrimitiveMap directly to a Stream object. This
+ /// allows a client to write a PrimitiveMap in a compressed or
+ /// otherwise encoded form without this class needing to know
+ /// about it.
+ /// </summary>
+ /// <param name="destination">
+ /// A <see cref="Stream"/>
+ /// </param>
+ public void Marshal(Stream destination)
+ {
+ lock(dictionary.SyncRoot)
+ {
+ MarshalPrimitiveMap(dictionary, destination);
+ }
+ }
+
+ /// <summary>
/// Marshals the primitive type map to a byte array
/// </summary>
public static byte[] MarshalPrimitiveMap(IDictionary map)
@@ -321,6 +356,17 @@
return memoryStream.GetBuffer();
}
+ public static void MarshalPrimitiveMap(IDictionary map, Stream stream)
+ {
+ if(map != null)
+ {
+ lock(map.SyncRoot)
+ {
+ MarshalPrimitiveMap(map, new EndianBinaryWriter(stream));
+ }
+ }
+ }
+
public static void MarshalPrimitiveMap(IDictionary map, BinaryWriter dataOut)
{
if(map == null)
@@ -357,6 +403,11 @@
return UnmarshalPrimitiveMap(new EndianBinaryReader(new MemoryStream(data)));
}
}
+
+ public static IDictionary UnmarshalPrimitiveMap(Stream source)
+ {
+ return UnmarshalPrimitiveMap(new EndianBinaryReader(source));
+ }
public static IDictionary UnmarshalPrimitiveMap(BinaryReader dataIn)
{