diff options
| author | Robert Greig <rgreig@apache.org> | 2007-02-26 17:46:07 +0000 |
|---|---|---|
| committer | Robert Greig <rgreig@apache.org> | 2007-02-26 17:46:07 +0000 |
| commit | a019367dc582d61fa3739f385592c0baf9b972b8 (patch) | |
| tree | 5ce170123120f788d07d472e2febf6b32f17dc29 /qpid/dotnet/Qpid.Client/Client/Message/AbstractQmsMessage.cs | |
| parent | 2e9743ac06fc05609155769bf04f4fa442d848c2 (diff) | |
| download | qpid-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.cs | 37 |
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; |
