You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by st...@apache.org on 2006/12/06 17:30:17 UTC
svn commit: r483135 - in /incubator/qpid/trunk/qpid/dotnet: Qpid.Buffer/
Qpid.Client/ Qpid.Client/Client/ Qpid.Client/Client/Message/
Qpid.Codec/Support/ Qpid.Common/ Qpid.Common/Framing/
Author: steshaw
Date: Wed Dec 6 08:30:16 2006
New Revision: 483135
URL: http://svn.apache.org/viewvc?view=rev&rev=483135
Log:
QPID-128 Missed a couple of things while porting Java client changes recently.
Added:
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs (with props)
Modified:
incubator/qpid/trunk/qpid/dotnet/Qpid.Buffer/HeapByteBuffer.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/AmqChannel.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidBytesMessage.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidTextMessage.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Qpid.Client.csproj
incubator/qpid/trunk/qpid/dotnet/Qpid.Codec/Support/SimpleProtocolEncoderOutput.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Framing/FieldTable.cs
incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Qpid.Common.csproj
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Buffer/HeapByteBuffer.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Buffer/HeapByteBuffer.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Buffer/HeapByteBuffer.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Buffer/HeapByteBuffer.cs Wed Dec 6 08:30:16 2006
@@ -126,8 +126,11 @@
}
public override byte[] ToByteArray()
- {
- return _underlyingData;
+ {
+ // Return copy of bytes remaining.
+ byte[] result = new byte[Remaining];
+ Array.Copy(_underlyingData, _position, result, 0, Remaining);
+ return result;
}
private void CheckSpace(int size)
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/AmqChannel.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/AmqChannel.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/AmqChannel.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/AmqChannel.cs Wed Dec 6 08:30:16 2006
@@ -23,6 +23,7 @@
using System.Text.RegularExpressions;
using System.Threading;
using log4net;
+using Qpid.Buffer;
using Qpid.Client.Message;
using Qpid.Collections;
using Qpid.Framing;
@@ -801,7 +802,25 @@
currentTime = DateTime.UtcNow.Ticks;
message.Timestamp = currentTime;
}
- byte[] payload = message.Data.ToByteArray();
+
+ //
+ // Very nasty temporary hack for GRM. Will be altered ASAP.
+ //
+ if (message is QpidBytesMessage)
+ {
+ QpidBytesMessage msg = (QpidBytesMessage) message;
+ if (!msg.IsReadable)
+ {
+ msg.Reset();
+ }
+ }
+
+ ByteBuffer buf = message.Data;
+ byte[] payload = null;
+ if (buf != null)
+ {
+ payload = buf.ToByteArray();
+ }
BasicContentHeaderProperties contentHeaderProperties = message.ContentHeaderProperties;
if (timeToLive > 0)
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs Wed Dec 6 08:30:16 2006
@@ -37,6 +37,7 @@
protected bool _redelivered;
protected ByteBuffer _data;
+ private bool _readableMessage = false;
//protected AbstractQmsMessage() : base(new BasicContentHeaderProperties())
//{
@@ -64,6 +65,7 @@
{
_data.Acquire();
}
+ _readableMessage = (data != null);
}
protected AbstractQmsMessage(long deliveryTag, BasicContentHeaderProperties contentHeader, ByteBuffer data)
@@ -74,6 +76,7 @@
{
_data.Acquire();
}
+ _readableMessage = data != null;
}
protected AbstractQmsMessage(BasicContentHeaderProperties contentHeader, long deliveryTag) : base(contentHeader, deliveryTag)
@@ -113,6 +116,14 @@
}
}
+ protected void CheckReadable()
+ {
+ if (!_readableMessage)
+ {
+ throw new MessageNotReadableException("You need to call reset() to make the message readable");
+ }
+ }
+
public byte[] CorrelationIdAsBytes
{
get
@@ -339,7 +350,13 @@
get { return new QpidHeaders(this); }
}
- public abstract void ClearBody();
+ public abstract void ClearBodyImpl();
+
+ public void ClearBody()
+ {
+ ClearBodyImpl();
+ _readableMessage = false;
+ }
/// <summary>
/// Get a String representation of the body of the message. Used in the
@@ -471,352 +488,20 @@
return (BasicContentHeaderProperties) _contentHeaderProperties;
}
}
- }
-
- internal class QpidHeaders : IHeaders
- {
- public const char BOOLEAN_PROPERTY_PREFIX = 'B';
- public const char BYTE_PROPERTY_PREFIX = 'b';
- public const char SHORT_PROPERTY_PREFIX = 's';
- public const char INT_PROPERTY_PREFIX = 'i';
- public const char LONG_PROPERTY_PREFIX = 'l';
- public const char FLOAT_PROPERTY_PREFIX = 'f';
- public const char DOUBLE_PROPERTY_PREFIX = 'd';
- public const char STRING_PROPERTY_PREFIX = 'S';
-
- AbstractQmsMessage _message;
-
- public QpidHeaders(AbstractQmsMessage message)
- {
- _message = message;
- }
-
- public bool Contains(string name)
- {
- CheckPropertyName(name);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return false;
- }
- else
- {
- // TODO: fix this
- return _message.ContentHeaderProperties.Headers.Contains(STRING_PROPERTY_PREFIX + name);
- }
- }
-
- public void Clear()
- {
- if (_message.ContentHeaderProperties.Headers != null)
- {
- _message.ContentHeaderProperties.Headers.Clear();
- }
- }
-
- public string this[string name]
- {
- get
- {
- return GetString(name);
- }
- set
- {
- SetString(name, value);
- }
- }
-
- public bool GetBoolean(string name)
- {
- CheckPropertyName(name);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return false;
- }
- else
- {
- object b = _message.ContentHeaderProperties.Headers[BOOLEAN_PROPERTY_PREFIX + name];
-
- if (b == null)
- {
- return false;
- }
- else
- {
- return (bool)b;
- }
- }
- }
-
- public void SetBoolean(string name, bool b)
- {
- CheckPropertyName(name);
- _message.ContentHeaderProperties.Headers[BOOLEAN_PROPERTY_PREFIX + name] = b;
- }
-
- public byte GetByte(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object b = _message.ContentHeaderProperties.Headers[BYTE_PROPERTY_PREFIX + propertyName];
- if (b == null)
- {
- return 0;
- }
- else
- {
- return (byte)b;
- }
- }
- }
-
- public void SetByte(string propertyName, byte b)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[BYTE_PROPERTY_PREFIX + propertyName] = b;
- }
-
- public short GetShort(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object s = _message.ContentHeaderProperties.Headers[SHORT_PROPERTY_PREFIX + propertyName];
- if (s == null)
- {
- return 0;
- }
- else
- {
- return (short)s;
- }
- }
- }
-
- public void SetShort(string propertyName, short i)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[SHORT_PROPERTY_PREFIX + propertyName] = i;
- }
-
- public int GetInt(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object i = _message.ContentHeaderProperties.Headers[INT_PROPERTY_PREFIX + propertyName];
- if (i == null)
- {
- return 0;
- }
- else
- {
- return (int)i;
- }
- }
- }
-
- public void SetInt(string propertyName, int i)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[INT_PROPERTY_PREFIX + propertyName] = i;
- }
-
- public long GetLong(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object l = _message.ContentHeaderProperties.Headers[LONG_PROPERTY_PREFIX + propertyName];
- if (l == null)
- {
- // temp - the spec says do this but this throws a NumberFormatException
- //return Long.valueOf(null).longValue();
- return 0;
- }
- else
- {
- return (long)l;
- }
- }
- }
-
- public void SetLong(string propertyName, long l)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[LONG_PROPERTY_PREFIX + propertyName] = l;
- }
-
- public float GetFloat(String propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object f = _message.ContentHeaderProperties.Headers[FLOAT_PROPERTY_PREFIX + propertyName];
- if (f == null)
- {
- return 0;
- }
- else
- {
- return (float)f;
- }
- }
- }
-
- public void SetFloat(string propertyName, float f)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[FLOAT_PROPERTY_PREFIX + propertyName] = f;
- }
-
- public double GetDouble(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return 0;
- }
- else
- {
- object d = _message.ContentHeaderProperties.Headers[DOUBLE_PROPERTY_PREFIX + propertyName];
- if (d == null)
- {
- return 0;
- }
- else
- {
- return (double)d;
- }
- }
- }
-
- public void SetDouble(string propertyName, double v)
- {
- CheckPropertyName(propertyName);
- _message.ContentHeaderProperties.Headers[DOUBLE_PROPERTY_PREFIX + propertyName] = v;
- }
-
- public string GetString(string propertyName)
- {
- CheckPropertyName(propertyName);
- if (_message.ContentHeaderProperties.Headers == null)
- {
- return null;
- }
- else
- {
- return (string)_message.ContentHeaderProperties.Headers[STRING_PROPERTY_PREFIX + propertyName];
- }
- }
-
- public void SetString(string propertyName, string value)
- {
- CheckPropertyName(propertyName);
- CreatePropertyMapIfRequired();
- propertyName = STRING_PROPERTY_PREFIX + propertyName;
- _message.ContentHeaderProperties.Headers[propertyName] = value;
- }
-
- private void CheckPropertyName(string propertyName)
- {
- if (propertyName == null)
- {
- throw new ArgumentException("Property name must not be null");
- }
- else if ("".Equals(propertyName))
- {
- throw new ArgumentException("Property name must not be the empty string");
- }
-
- if (_message.ContentHeaderProperties.Headers == null)
- {
- _message.ContentHeaderProperties.Headers = new FieldTable();
- }
- }
- private void CreatePropertyMapIfRequired()
+ protected void Reset()
{
- if (_message.ContentHeaderProperties.Headers == null)
- {
- _message.ContentHeaderProperties.Headers = new FieldTable();
- }
+ _readableMessage = true;
}
- public override string ToString()
+ public bool IsReadable
{
- StringBuilder buf = new StringBuilder("{");
- int i = 0;
- foreach (DictionaryEntry entry in _message.ContentHeaderProperties.Headers)
- {
- ++i;
- if (i > 1)
- {
- buf.Append(", ");
- }
- string propertyName = (string)entry.Key;
- if (propertyName == null)
- {
- buf.Append("\nInternal error: Property with NULL key defined");
- }
- else
- {
- buf.Append(propertyName.Substring(1));
-
- buf.Append(" : ");
-
- char typeIdentifier = propertyName[0];
- buf.Append(typeIdentifierToName(typeIdentifier));
- buf.Append(" = ").Append(entry.Value);
- }
- }
- buf.Append("}");
- return buf.ToString();
+ get { return _readableMessage; }
}
- private static string typeIdentifierToName(char typeIdentifier)
+ public bool isWritable
{
- switch (typeIdentifier)
- {
- case BOOLEAN_PROPERTY_PREFIX:
- return "boolean";
- case BYTE_PROPERTY_PREFIX:
- return "byte";
- case SHORT_PROPERTY_PREFIX:
- return "short";
- case INT_PROPERTY_PREFIX:
- return "int";
- case LONG_PROPERTY_PREFIX:
- return "long";
- case FLOAT_PROPERTY_PREFIX:
- return "float";
- case DOUBLE_PROPERTY_PREFIX:
- return "double";
- case STRING_PROPERTY_PREFIX:
- return "string";
- default:
- return "unknown ( '" + typeIdentifier + "')";
- }
+ get { return !_readableMessage; }
}
}
}
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidBytesMessage.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidBytesMessage.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidBytesMessage.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidBytesMessage.cs Wed Dec 6 08:30:16 2006
@@ -31,6 +31,8 @@
{
private const string MIME_TYPE = "application/octet-stream";
+ private const int DEFAULT_BUFFER_INITIAL_SIZE = 1024;
+
/// <summary>
/// The backingstore for the data
/// </summary>
@@ -57,6 +59,8 @@
ContentHeaderProperties.ContentType = MIME_TYPE;
if (data == null)
{
+ _data = ByteBuffer.Allocate(DEFAULT_BUFFER_INITIAL_SIZE);
+ //_data.AutoExpand = true;
_dataStream = new MemoryStream();
_writer = new BinaryWriter(_dataStream);
}
@@ -76,22 +80,27 @@
_dataStream = new MemoryStream(data.ToByteArray());
_bodyLength = data.ToByteArray().Length;
_reader = new BinaryReader(_dataStream);
+
}
-
- public override void ClearBody()
+ public override void ClearBodyImpl()
{
- if (_reader != null)
- {
- _reader.Close();
- _reader = null;
- }
- _dataStream = new MemoryStream();
- _bodyLength = 0;
-
- _writer = new BinaryWriter(_dataStream);
+ _data.Clear();
}
+// public override void ClearBody()
+// {
+// if (_reader != null)
+// {
+// _reader.Close();
+// _reader = null;
+// }
+// _dataStream = new MemoryStream();
+// _bodyLength = 0;
+//
+// _writer = new BinaryWriter(_dataStream);
+// }
+
public override string ToBodyString()
{
CheckReadable();
@@ -156,7 +165,8 @@
get
{
CheckReadable();
- return _bodyLength;
+ return _data.Limit; // XXX
+// return _bodyLength;
}
}
@@ -164,13 +174,14 @@
///
/// </summary>
/// <exception cref="MessageNotReadableException">if the message is in write mode</exception>
- private void CheckReadable()
- {
- if (_reader == null)
- {
- throw new MessageNotReadableException("You need to call reset() to make the message readable");
- }
- }
+// private void CheckReadable()
+// {
+//
+// if (_reader == null)
+// {
+// throw new MessageNotReadableException("You need to call reset() to make the message readable");
+// }
+// }
private void CheckWritable()
{
@@ -565,18 +576,21 @@
public void Reset()
{
- CheckWritable();
- try
- {
- _writer.Close();
- _writer = null;
- _reader = new BinaryReader(_dataStream);
- _bodyLength = (int) _dataStream.Length;
- }
- catch (IOException e)
- {
- throw new QpidException(e.ToString(), e);
- }
+ base.Reset();
+ _data.Flip();
+
+// CheckWritable();
+// try
+// {
+// _writer.Close();
+// _writer = null;
+// _reader = new BinaryReader(_dataStream);
+// _bodyLength = (int) _dataStream.Length;
+// }
+// catch (IOException e)
+// {
+// throw new QpidException(e.ToString(), e);
+// }
}
}
}
Added: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs?view=auto&rev=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs (added)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs Wed Dec 6 08:30:16 2006
@@ -0,0 +1,356 @@
+using System;
+using System.Collections;
+using System.Text;
+using Qpid.Framing;
+using Qpid.Messaging;
+
+namespace Qpid.Client.Message
+{
+ internal class QpidHeaders : IHeaders
+ {
+ public const char BOOLEAN_PROPERTY_PREFIX = 'B';
+ public const char BYTE_PROPERTY_PREFIX = 'b';
+ public const char SHORT_PROPERTY_PREFIX = 's';
+ public const char INT_PROPERTY_PREFIX = 'i';
+ public const char LONG_PROPERTY_PREFIX = 'l';
+ public const char FLOAT_PROPERTY_PREFIX = 'f';
+ public const char DOUBLE_PROPERTY_PREFIX = 'd';
+ public const char STRING_PROPERTY_PREFIX = 'S';
+
+ AbstractQmsMessage _message;
+
+ public QpidHeaders(AbstractQmsMessage message)
+ {
+ _message = message;
+ }
+
+ public bool Contains(string name)
+ {
+ CheckPropertyName(name);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return false;
+ }
+ else
+ {
+ // TODO: fix this
+ return _message.ContentHeaderProperties.Headers.Contains(STRING_PROPERTY_PREFIX + name);
+ }
+ }
+
+ public void Clear()
+ {
+ if (_message.ContentHeaderProperties.Headers != null)
+ {
+ _message.ContentHeaderProperties.Headers.Clear();
+ }
+ }
+
+ public string this[string name]
+ {
+ get
+ {
+ return GetString(name);
+ }
+ set
+ {
+ SetString(name, value);
+ }
+ }
+
+ public bool GetBoolean(string name)
+ {
+ CheckPropertyName(name);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return false;
+ }
+ else
+ {
+ object b = _message.ContentHeaderProperties.Headers[BOOLEAN_PROPERTY_PREFIX + name];
+
+ if (b == null)
+ {
+ return false;
+ }
+ else
+ {
+ return (bool)b;
+ }
+ }
+ }
+
+ public void SetBoolean(string name, bool b)
+ {
+ CheckPropertyName(name);
+ _message.ContentHeaderProperties.Headers[BOOLEAN_PROPERTY_PREFIX + name] = b;
+ }
+
+ public byte GetByte(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object b = _message.ContentHeaderProperties.Headers[BYTE_PROPERTY_PREFIX + propertyName];
+ if (b == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return (byte)b;
+ }
+ }
+ }
+
+ public void SetByte(string propertyName, byte b)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[BYTE_PROPERTY_PREFIX + propertyName] = b;
+ }
+
+ public short GetShort(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object s = _message.ContentHeaderProperties.Headers[SHORT_PROPERTY_PREFIX + propertyName];
+ if (s == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return (short)s;
+ }
+ }
+ }
+
+ public void SetShort(string propertyName, short i)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[SHORT_PROPERTY_PREFIX + propertyName] = i;
+ }
+
+ public int GetInt(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object i = _message.ContentHeaderProperties.Headers[INT_PROPERTY_PREFIX + propertyName];
+ if (i == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return (int)i;
+ }
+ }
+ }
+
+ public void SetInt(string propertyName, int i)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[INT_PROPERTY_PREFIX + propertyName] = i;
+ }
+
+ public long GetLong(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object l = _message.ContentHeaderProperties.Headers[LONG_PROPERTY_PREFIX + propertyName];
+ if (l == null)
+ {
+ // temp - the spec says do this but this throws a NumberFormatException
+ //return Long.valueOf(null).longValue();
+ return 0;
+ }
+ else
+ {
+ return (long)l;
+ }
+ }
+ }
+
+ public void SetLong(string propertyName, long l)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[LONG_PROPERTY_PREFIX + propertyName] = l;
+ }
+
+ public float GetFloat(String propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object f = _message.ContentHeaderProperties.Headers[FLOAT_PROPERTY_PREFIX + propertyName];
+ if (f == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return (float)f;
+ }
+ }
+ }
+
+ public void SetFloat(string propertyName, float f)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[FLOAT_PROPERTY_PREFIX + propertyName] = f;
+ }
+
+ public double GetDouble(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return 0;
+ }
+ else
+ {
+ object d = _message.ContentHeaderProperties.Headers[DOUBLE_PROPERTY_PREFIX + propertyName];
+ if (d == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return (double)d;
+ }
+ }
+ }
+
+ public void SetDouble(string propertyName, double v)
+ {
+ CheckPropertyName(propertyName);
+ _message.ContentHeaderProperties.Headers[DOUBLE_PROPERTY_PREFIX + propertyName] = v;
+ }
+
+ public string GetString(string propertyName)
+ {
+ CheckPropertyName(propertyName);
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ return null;
+ }
+ else
+ {
+ return (string)_message.ContentHeaderProperties.Headers[STRING_PROPERTY_PREFIX + propertyName];
+ }
+ }
+
+ public void SetString(string propertyName, string value)
+ {
+ CheckPropertyName(propertyName);
+ CreatePropertyMapIfRequired();
+ propertyName = STRING_PROPERTY_PREFIX + propertyName;
+ _message.ContentHeaderProperties.Headers[propertyName] = value;
+ }
+
+ private void CheckPropertyName(string propertyName)
+ {
+ if (propertyName == null)
+ {
+ throw new ArgumentException("Property name must not be null");
+ }
+ else if ("".Equals(propertyName))
+ {
+ throw new ArgumentException("Property name must not be the empty string");
+ }
+
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ _message.ContentHeaderProperties.Headers = new FieldTable();
+ }
+ }
+
+ private void CreatePropertyMapIfRequired()
+ {
+ if (_message.ContentHeaderProperties.Headers == null)
+ {
+ _message.ContentHeaderProperties.Headers = new FieldTable();
+ }
+ }
+
+ public override string ToString()
+ {
+ StringBuilder buf = new StringBuilder("{");
+ int i = 0;
+ foreach (DictionaryEntry entry in _message.ContentHeaderProperties.Headers)
+ {
+ ++i;
+ if (i > 1)
+ {
+ buf.Append(", ");
+ }
+ string propertyName = (string)entry.Key;
+ if (propertyName == null)
+ {
+ buf.Append("\nInternal error: Property with NULL key defined");
+ }
+ else
+ {
+ buf.Append(propertyName.Substring(1));
+
+ buf.Append(" : ");
+
+ char typeIdentifier = propertyName[0];
+ buf.Append(typeIdentifierToName(typeIdentifier));
+ buf.Append(" = ").Append(entry.Value);
+ }
+ }
+ buf.Append("}");
+ return buf.ToString();
+ }
+
+ private static string typeIdentifierToName(char typeIdentifier)
+ {
+ switch (typeIdentifier)
+ {
+ case BOOLEAN_PROPERTY_PREFIX:
+ return "boolean";
+ case BYTE_PROPERTY_PREFIX:
+ return "byte";
+ case SHORT_PROPERTY_PREFIX:
+ return "short";
+ case INT_PROPERTY_PREFIX:
+ return "int";
+ case LONG_PROPERTY_PREFIX:
+ return "long";
+ case FLOAT_PROPERTY_PREFIX:
+ return "float";
+ case DOUBLE_PROPERTY_PREFIX:
+ return "double";
+ case STRING_PROPERTY_PREFIX:
+ return "string";
+ default:
+ return "unknown ( '" + typeIdentifier + "')";
+ }
+ }
+
+ }
+}
\ No newline at end of file
Propchange: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidTextMessage.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidTextMessage.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidTextMessage.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Client/Message/QpidTextMessage.cs Wed Dec 6 08:30:16 2006
@@ -86,8 +86,12 @@
Text = text;
}
- public override void ClearBody()
+ public override void ClearBodyImpl()
{
+ if (_data != null)
+ {
+ _data.Release();
+ }
_data = null;
_decodedValue = null;
}
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Qpid.Client.csproj
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Qpid.Client.csproj?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Qpid.Client.csproj (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Client/Qpid.Client.csproj Wed Dec 6 08:30:16 2006
@@ -42,6 +42,7 @@
<Compile Include="Client\AMQConnectionException.cs" />
<Compile Include="Client\AMQDestination.cs" />
<Compile Include="Client\AmqChannel.cs" />
+ <Compile Include="Client\Message\QpidHeaders.cs" />
<Compile Include="Client\QpidConnectionInfo.cs" />
<Compile Include="Client\BasicMessageConsumer.cs" />
<Compile Include="Client\BasicMessageProducer.cs" />
@@ -106,13 +107,13 @@
<Compile Include="qms\UrlSyntaxException.cs" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\Qpid.Codec\Qpid.Codec.csproj">
- <Project>{22D0D0C2-77AF-4DE3-B456-7FF3893F9F88}</Project>
- <Name>Qpid.Codec</Name>
- </ProjectReference>
<ProjectReference Include="..\Qpid.Buffer\Qpid.Buffer.csproj">
<Project>{44384DF2-B0A4-4580-BDBC-EE4BAA87D995}</Project>
<Name>Qpid.Buffer</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Qpid.Codec\Qpid.Codec.csproj">
+ <Project>{22D0D0C2-77AF-4DE3-B456-7FF3893F9F88}</Project>
+ <Name>Qpid.Codec</Name>
</ProjectReference>
<ProjectReference Include="..\Qpid.Messaging\Qpid.Messaging.csproj">
<Project>{6688F826-C58E-4C1B-AA1F-22AFAB4B7D07}</Project>
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Codec/Support/SimpleProtocolEncoderOutput.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Codec/Support/SimpleProtocolEncoderOutput.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Codec/Support/SimpleProtocolEncoderOutput.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Codec/Support/SimpleProtocolEncoderOutput.cs Wed Dec 6 08:30:16 2006
@@ -41,4 +41,3 @@
}
}
}
-
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Framing/FieldTable.cs
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Framing/FieldTable.cs?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Framing/FieldTable.cs (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Framing/FieldTable.cs Wed Dec 6 08:30:16 2006
@@ -74,7 +74,7 @@
value = buffer.GetUnsignedInt();
break;
default:
- throw new AMQFrameDecodingException("Unsupported field table type: " + type);
+ throw new AMQFrameDecodingException("Unsupported field table type: '" + type + "' charcode" + (int)type);
}
sizeRead += (sizeRemaining - buffer.Remaining);
Modified: incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Qpid.Common.csproj
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Qpid.Common.csproj?view=diff&rev=483135&r1=483134&r2=483135
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Qpid.Common.csproj (original)
+++ incubator/qpid/trunk/qpid/dotnet/Qpid.Common/Qpid.Common.csproj Wed Dec 6 08:30:16 2006
@@ -168,13 +168,13 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\Qpid.Codec\Qpid.Codec.csproj">
- <Project>{22D0D0C2-77AF-4DE3-B456-7FF3893F9F88}</Project>
- <Name>Qpid.Codec</Name>
- </ProjectReference>
<ProjectReference Include="..\Qpid.Buffer\Qpid.Buffer.csproj">
<Project>{44384DF2-B0A4-4580-BDBC-EE4BAA87D995}</Project>
<Name>Qpid.Buffer</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Qpid.Codec\Qpid.Codec.csproj">
+ <Project>{22D0D0C2-77AF-4DE3-B456-7FF3893F9F88}</Project>
+ <Name>Qpid.Codec</Name>
</ProjectReference>
<ProjectReference Include="..\Qpid.Messaging\Qpid.Messaging.csproj">
<Project>{6688F826-C58E-4C1B-AA1F-22AFAB4B7D07}</Project>