summaryrefslogtreecommitdiff
path: root/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
diff options
context:
space:
mode:
authorRobert Greig <rgreig@apache.org>2007-02-26 17:46:07 +0000
committerRobert Greig <rgreig@apache.org>2007-02-26 17:46:07 +0000
commita019367dc582d61fa3739f385592c0baf9b972b8 (patch)
tree5ce170123120f788d07d472e2febf6b32f17dc29 /qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
parent2e9743ac06fc05609155769bf04f4fa442d848c2 (diff)
downloadqpid-python-a019367dc582d61fa3739f385592c0baf9b972b8.tar.gz
(Patch submitted by Tomas Restrepo) QPID-ByteBuffer.diff.
Completely refactors the byte buffer implementation, doing away with a complex inheritance hierarchy. Fixes reading and writing of field table to permit interop with Java client. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@511923 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs')
-rw-r--r--qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs37
1 files changed, 21 insertions, 16 deletions
diff --git a/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs b/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
index 85ac497ad2..1d2b2db3ca 100644
--- a/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
+++ b/qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs
@@ -36,33 +36,38 @@ namespace Qpid.Client.Message
protected ByteBuffer _data;
protected bool _readableMessage = false;
+ private QpidHeaders _headers;
#region new_java_ctrs
protected AbstractQmsMessage(ByteBuffer data)
: base(new BasicContentHeaderProperties())
{
- _data = data;
- if (_data != null)
- {
- _data.acquire();
- }
- _readableMessage = (data != null);
+ Init(data);
}
protected AbstractQmsMessage(long deliveryTag, BasicContentHeaderProperties contentHeader, ByteBuffer data)
: this(contentHeader, deliveryTag)
{
- _data = data;
- if (_data != null)
- {
- _data.acquire();
- }
- _readableMessage = data != null;
+ Init(data);
}
protected AbstractQmsMessage(BasicContentHeaderProperties contentHeader, long deliveryTag) : base(contentHeader, deliveryTag)
{
+ Init(null);
+ }
+
+ private void Init(ByteBuffer data)
+ {
+ _data = data;
+ if ( _data != null )
+ {
+ _data.Acquire();
+ }
+ _readableMessage = (data != null);
+ if ( ContentHeaderProperties.Headers == null )
+ ContentHeaderProperties.Headers = new FieldTable();
+ _headers = new QpidHeaders(ContentHeaderProperties.Headers);
}
#endregion
@@ -269,7 +274,7 @@ namespace Qpid.Client.Message
}
set
{
- ContentHeaderProperties.Expiration = (uint) value;
+ ContentHeaderProperties.Expiration = value;
}
}
@@ -314,7 +319,7 @@ namespace Qpid.Client.Message
public IHeaders Headers
{
- get { return new QpidHeaders(this); }
+ get { return _headers; }
}
public abstract void ClearBodyImpl();
@@ -345,13 +350,13 @@ namespace Qpid.Client.Message
{
if (!_readableMessage)
{
- _data.flip();
+ _data.Flip();
}
else
{
// Make sure we rewind the data just in case any method has moved the
// position beyond the start.
- _data.rewind();
+ _data.Rewind();
}
}
return _data;