activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jgo...@apache.org
Subject svn commit: r822538 [2/2] - in /activemq/activemq-dotnet: Apache.NMS.ActiveMQ/trunk/src/main/csharp/ Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ Apache.NMS.EMS/trunk/ Apache.NMS.EMS/trunk/src/main/csharp/ Apache.NMS.MSMQ/trunk/src/main/csharp/ ...
Date Tue, 06 Oct 2009 23:53:13 GMT
Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/BytesMessage.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/BytesMessage.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/BytesMessage.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/BytesMessage.cs Tue Oct
 6 23:53:12 2009
@@ -55,17 +55,10 @@
 		private EndianBinaryReader dataIn = null;
 		private EndianBinaryWriter dataOut = null;
 		private MemoryStream outputBuffer = null;
-		private byte[] content;
 
 		// Need this later when we add compression to store true content length.
 		private long length = 0;
 
-		public byte[] Content
-		{
-			get { StoreContent(); return content; }
-			set { content = value; }
-		}
-
 		public override void ClearBody()
 		{
 			base.ClearBody();

Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/MessageProducer.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/MessageProducer.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/MessageProducer.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/MessageProducer.cs Tue
Oct  6 23:53:12 2009
@@ -223,6 +223,11 @@
 			return session.CreateBytesMessage(body);
 		}
 
+		public IStreamMessage CreateStreamMessage()
+		{
+			return session.CreateStreamMessage();
+		}
+
 		public MsgDeliveryMode DeliveryMode
 		{
 			get { return deliveryMode; }

Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/ObjectMessage.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/ObjectMessage.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/ObjectMessage.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/ObjectMessage.cs Tue Oct
 6 23:53:12 2009
@@ -30,7 +30,6 @@
 #if !(PocketPC||NETCF||NETCF_2_0)
 		private IFormatter formatter;
 #endif
-		public byte[] Content;
 
 		public ObjectMessage()
 		{

Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/Session.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/Session.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/Session.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/Session.cs Tue Oct  6 23:53:12
2009
@@ -163,6 +163,11 @@
 			return answer;
 		}
 
+		public IStreamMessage CreateStreamMessage()
+		{
+			return new StreamMessage();
+		}
+
 		public IObjectMessage CreateObjectMessage(Object body)
 		{
 			ObjectMessage answer = new ObjectMessage();

Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/StreamMessage.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/StreamMessage.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/StreamMessage.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/StreamMessage.cs Tue Oct
 6 23:53:12 2009
@@ -15,11 +15,879 @@
  * limitations under the License.
  */
 
+using System;
+using System.IO;
+using Apache.NMS.Util;
+
 namespace Apache.NMS.MSMQ
 {
-	public class StreamMessage : BaseMessage
+	public class StreamMessage : BaseMessage, IStreamMessage
 	{
+		private EndianBinaryReader dataIn = null;
+		private EndianBinaryWriter dataOut = null;
+		private MemoryStream byteBuffer = null;
+		private int bytesRemaining = -1;
+
+		public bool ReadBoolean()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.BOOLEAN_TYPE)
+					{
+						return this.dataIn.ReadBoolean();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Boolean.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a bool");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Boolean type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public byte ReadByte()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.BYTE_TYPE)
+					{
+						return this.dataIn.ReadByte();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Byte.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a byte");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Byte type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public char ReadChar()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.CHAR_TYPE)
+					{
+						return this.dataIn.ReadChar();
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a char");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Char type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public short ReadInt16()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.SHORT_TYPE)
+					{
+						return this.dataIn.ReadInt16();
+					}
+					else if(type == PrimitiveMap.BYTE_TYPE)
+					{
+						return this.dataIn.ReadByte();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Int16.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a short");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Int16 type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public int ReadInt32()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.INTEGER_TYPE)
+					{
+						return this.dataIn.ReadInt32();
+					}
+					else if(type == PrimitiveMap.SHORT_TYPE)
+					{
+						return this.dataIn.ReadInt16();
+					}
+					else if(type == PrimitiveMap.BYTE_TYPE)
+					{
+						return this.dataIn.ReadByte();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Int32.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a int");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Int32 type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public long ReadInt64()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.LONG_TYPE)
+					{
+						return this.dataIn.ReadInt64();
+					}
+					else if(type == PrimitiveMap.INTEGER_TYPE)
+					{
+						return this.dataIn.ReadInt32();
+					}
+					else if(type == PrimitiveMap.SHORT_TYPE)
+					{
+						return this.dataIn.ReadInt16();
+					}
+					else if(type == PrimitiveMap.BYTE_TYPE)
+					{
+						return this.dataIn.ReadByte();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Int64.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a long");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Int64 type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public float ReadSingle()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.FLOAT_TYPE)
+					{
+						return this.dataIn.ReadSingle();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Single.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a float");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Single type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public double ReadDouble()
+		{
+			InitializeReading();
+
+			try
+			{
+				long startingPos = this.byteBuffer.Position;
+				try
+				{
+					int type = this.dataIn.ReadByte();
+
+					if(type == PrimitiveMap.DOUBLE_TYPE)
+					{
+						return this.dataIn.ReadDouble();
+					}
+					else if(type == PrimitiveMap.FLOAT_TYPE)
+					{
+						return this.dataIn.ReadSingle();
+					}
+					else if(type == PrimitiveMap.STRING_TYPE)
+					{
+						return Single.Parse(this.dataIn.ReadString16());
+					}
+					else if(type == PrimitiveMap.NULL)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new NMSException("Cannot convert Null type to a double");
+					}
+					else
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Value is not a Double type.");
+					}
+				}
+				catch(FormatException e)
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw NMSExceptionSupport.createMessageFormatException(e);
+				}
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public string ReadString()
+		{
+			InitializeReading();
+
+			long startingPos = this.byteBuffer.Position;
+
+			try
+			{
+				int type = this.dataIn.ReadByte();
+
+				if(type == PrimitiveMap.BIG_STRING_TYPE)
+				{
+					return this.dataIn.ReadString32();
+				}
+				else if(type == PrimitiveMap.STRING_TYPE)
+				{
+					return this.dataIn.ReadString16();
+				}
+				else if(type == PrimitiveMap.LONG_TYPE)
+				{
+					return this.dataIn.ReadInt64().ToString();
+				}
+				else if(type == PrimitiveMap.INTEGER_TYPE)
+				{
+					return this.dataIn.ReadInt32().ToString();
+				}
+				else if(type == PrimitiveMap.SHORT_TYPE)
+				{
+					return this.dataIn.ReadInt16().ToString();
+				}
+				else if(type == PrimitiveMap.FLOAT_TYPE)
+				{
+					return this.dataIn.ReadSingle().ToString();
+				}
+				else if(type == PrimitiveMap.DOUBLE_TYPE)
+				{
+					return this.dataIn.ReadDouble().ToString();
+				}
+				else if(type == PrimitiveMap.CHAR_TYPE)
+				{
+					return this.dataIn.ReadChar().ToString();
+				}
+				else if(type == PrimitiveMap.BYTE_TYPE)
+				{
+					return this.dataIn.ReadByte().ToString();
+				}
+				else if(type == PrimitiveMap.BOOLEAN_TYPE)
+				{
+					return this.dataIn.ReadBoolean().ToString();
+				}
+				else if(type == PrimitiveMap.NULL)
+				{
+					return null;
+				}
+				else
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw new MessageFormatException("Value is not a known type.");
+				}
+			}
+			catch(FormatException e)
+			{
+				this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
 
+		public int ReadBytes(byte[] value)
+		{
+			InitializeReading();
+
+			if(value == null)
+			{
+				throw new NullReferenceException("Passed Byte Array is null");
+			}
+
+			try
+			{
+				if(this.bytesRemaining == -1)
+				{
+					long startingPos = this.byteBuffer.Position;
+					byte type = this.dataIn.ReadByte();
+
+					if(type != PrimitiveMap.BYTE_ARRAY_TYPE)
+					{
+						this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+						throw new MessageFormatException("Not a byte array");
+					}
+
+					this.bytesRemaining = this.dataIn.ReadInt32();
+				}
+				else if(this.bytesRemaining == 0)
+				{
+					this.bytesRemaining = -1;
+					return -1;
+				}
+
+				if(value.Length <= this.bytesRemaining)
+				{
+					// small buffer
+					this.bytesRemaining -= value.Length;
+					this.dataIn.Read(value, 0, value.Length);
+					return value.Length;
+				}
+				else
+				{
+					// big buffer
+					int rc = this.dataIn.Read(value, 0, this.bytesRemaining);
+					this.bytesRemaining = 0;
+					return rc;
+				}
+			}
+			catch(EndOfStreamException ex)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(ex);
+			}
+			catch(IOException ex)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(ex);
+			}
+		}
+
+		public Object ReadObject()
+		{
+			InitializeReading();
+
+			long startingPos = this.byteBuffer.Position;
+
+			try
+			{
+				int type = this.dataIn.ReadByte();
+
+				if(type == PrimitiveMap.BIG_STRING_TYPE)
+				{
+					return this.dataIn.ReadString32();
+				}
+				else if(type == PrimitiveMap.STRING_TYPE)
+				{
+					return this.dataIn.ReadString16();
+				}
+				else if(type == PrimitiveMap.LONG_TYPE)
+				{
+					return this.dataIn.ReadInt64();
+				}
+				else if(type == PrimitiveMap.INTEGER_TYPE)
+				{
+					return this.dataIn.ReadInt32();
+				}
+				else if(type == PrimitiveMap.SHORT_TYPE)
+				{
+					return this.dataIn.ReadInt16();
+				}
+				else if(type == PrimitiveMap.FLOAT_TYPE)
+				{
+					return this.dataIn.ReadSingle();
+				}
+				else if(type == PrimitiveMap.DOUBLE_TYPE)
+				{
+					return this.dataIn.ReadDouble();
+				}
+				else if(type == PrimitiveMap.CHAR_TYPE)
+				{
+					return this.dataIn.ReadChar();
+				}
+				else if(type == PrimitiveMap.BYTE_TYPE)
+				{
+					return this.dataIn.ReadByte();
+				}
+				else if(type == PrimitiveMap.BOOLEAN_TYPE)
+				{
+					return this.dataIn.ReadBoolean();
+				}
+				else if(type == PrimitiveMap.BYTE_ARRAY_TYPE)
+				{
+					int length = this.dataIn.ReadInt32();
+					byte[] data = new byte[length];
+					this.dataIn.Read(data, 0, length);
+					return data;
+				}
+				else if(type == PrimitiveMap.NULL)
+				{
+					return null;
+				}
+				else
+				{
+					this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+					throw new MessageFormatException("Value is not a known type.");
+				}
+			}
+			catch(FormatException e)
+			{
+				this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+			catch(EndOfStreamException e)
+			{
+				throw NMSExceptionSupport.createMessageEOFException(e);
+			}
+			catch(IOException e)
+			{
+				throw NMSExceptionSupport.createMessageFormatException(e);
+			}
+		}
+
+		public void WriteBoolean(bool value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.BOOLEAN_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteByte(byte value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.BYTE_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteBytes(byte[] value)
+		{
+			InitializeWriting();
+			this.WriteBytes(value, 0, value.Length);
+		}
+
+		public void WriteBytes(byte[] value, int offset, int length)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.BYTE_ARRAY_TYPE);
+				this.dataOut.Write((int) length);
+				this.dataOut.Write(value, offset, length);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteChar(char value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.CHAR_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteInt16(short value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.SHORT_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteInt32(int value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.INTEGER_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteInt64(long value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.LONG_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteSingle(float value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.FLOAT_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteDouble(double value)
+		{
+			InitializeWriting();
+			try
+			{
+				this.dataOut.Write(PrimitiveMap.DOUBLE_TYPE);
+				this.dataOut.Write(value);
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteString(string value)
+		{
+			InitializeWriting();
+			try
+			{
+				if(value.Length > 8192)
+				{
+					this.dataOut.Write(PrimitiveMap.BIG_STRING_TYPE);
+					this.dataOut.WriteString32(value);
+				}
+				else
+				{
+					this.dataOut.Write(PrimitiveMap.STRING_TYPE);
+					this.dataOut.WriteString16(value);
+				}
+			}
+			catch(IOException e)
+			{
+				NMSExceptionSupport.create(e);
+			}
+		}
+
+		public void WriteObject(Object value)
+		{
+			InitializeWriting();
+			if(value is System.Byte)
+			{
+				this.WriteByte((byte) value);
+			}
+			else if(value is Char)
+			{
+				this.WriteChar((char) value);
+			}
+			else if(value is Boolean)
+			{
+				this.WriteBoolean((bool) value);
+			}
+			else if(value is Int16)
+			{
+				this.WriteInt16((short) value);
+			}
+			else if(value is Int32)
+			{
+				this.WriteInt32((int) value);
+			}
+			else if(value is Int64)
+			{
+				this.WriteInt64((long) value);
+			}
+			else if(value is Single)
+			{
+				this.WriteSingle((float) value);
+			}
+			else if(value is Double)
+			{
+				this.WriteDouble((double) value);
+			}
+			else if(value is byte[])
+			{
+				this.WriteBytes((byte[]) value);
+			}
+			else if(value is String)
+			{
+				this.WriteString((string) value);
+			}
+			else
+			{
+				throw new MessageFormatException("Cannot write non-primitive type:" + value.GetType());
+			}
+		}
+
+		public override void ClearBody()
+		{
+			base.ClearBody();
+			this.byteBuffer = null;
+			this.dataIn = null;
+			this.dataOut = null;
+			this.bytesRemaining = -1;
+		}
+
+		public void Reset()
+		{
+			StoreContent();
+			this.dataIn = null;
+			this.dataOut = null;
+			this.byteBuffer = null;
+			this.bytesRemaining = -1;
+			this.ReadOnlyBody = true;
+		}
+
+		private void InitializeReading()
+		{
+			FailIfWriteOnlyBody();
+			if(this.dataIn == null)
+			{
+				// TODO - Add support for Message Compression.
+				this.byteBuffer = new MemoryStream(this.Content, false);
+				dataIn = new EndianBinaryReader(byteBuffer);
+			}
+		}
+
+		private void InitializeWriting()
+		{
+			FailIfReadOnlyBody();
+			if(this.dataOut == null)
+			{
+				// TODO - Add support for Message Compression.
+				this.byteBuffer = new MemoryStream();
+				this.dataOut = new EndianBinaryWriter(byteBuffer);
+			}
+		}
+
+		private void StoreContent()
+		{
+			if(dataOut != null)
+			{
+				dataOut.Close();
+				// TODO - Add support for Message Compression.
+
+				this.Content = byteBuffer.ToArray();
+				this.dataOut = null;
+				this.byteBuffer = null;
+			}
+		}
 	}
 }
-

Modified: activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/TextMessage.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/TextMessage.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/TextMessage.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MSMQ/trunk/src/main/csharp/TextMessage.cs Tue Oct
 6 23:53:12 2009
@@ -22,7 +22,6 @@
 	public class TextMessage : BaseMessage, ITextMessage
 	{
 		public const int SIZE_OF_INT = 4; // sizeof(int) - though causes unsafe issues with net
1.1
-		public byte[] Content;
 
 		private String text;
 

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/IMessageProducer.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/IMessageProducer.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/IMessageProducer.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/IMessageProducer.cs Tue Oct
 6 23:53:12 2009
@@ -97,6 +97,11 @@
 		/// </summary>
 		IBytesMessage CreateBytesMessage(byte[] body);
 
+		/// <summary>
+		/// Creates a new stream message
+		/// </summary>
+		IStreamMessage CreateStreamMessage();
+
 		#endregion
 	}
 }

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/ISession.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/ISession.cs?rev=822538&r1=822537&r2=822538&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/ISession.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/ISession.cs Tue Oct  6 23:53:12
2009
@@ -155,6 +155,11 @@
 		IBytesMessage CreateBytesMessage(byte[] body);
 
 		/// <summary>
+		/// Creates a new stream message
+		/// </summary>
+		IStreamMessage CreateStreamMessage();
+
+		/// <summary>
 		/// Closes the session.  There is no need to close the producers and consumers
 		/// of a closed session.
 		/// </summary>



Mime
View raw message