diff options
Diffstat (limited to 'qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs')
| -rw-r--r-- | qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs | 547 |
1 files changed, 199 insertions, 348 deletions
diff --git a/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs b/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs index 3b44dbc45d..6538fcbefc 100644 --- a/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs +++ b/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs @@ -6,351 +6,202 @@ 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 + internal class QpidHeaders : IHeaders + { + private FieldTable _headers; + + public QpidHeaders(FieldTable headers) + { + if ( headers == null ) + throw new ArgumentNullException("headers"); + _headers = headers; + } + + public bool Contains(string name) + { + CheckPropertyName(name); + return _headers.Contains(name); + } + + public void Clear() + { + _headers.Clear(); + } + + public string this[string name] + { + get + { + return GetString(name); + } + set + { + SetString(name, value); + } + } + + public bool GetBoolean(string name) + { + CheckPropertyName(name); + if ( Contains(name) ) + return _headers.GetBoolean(name); + return false; + } + + public void SetBoolean(string name, bool b) + { + CheckPropertyName(name); + _headers.SetBoolean(name, b); + } + + public byte GetByte(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetByte(propertyName); + return 0; + } + + public void SetByte(string propertyName, byte b) + { + CheckPropertyName(propertyName); + _headers.SetByte(propertyName, b); + } + + // we have sbyte overloads to interoperate with java + // because the Java client/server uses signed bytes + // by default, while C#'s is unsigned + public sbyte GetSByte(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetSByte(propertyName); + return 0; + } + + public void SetSByte(string propertyName, sbyte b) + { + CheckPropertyName(propertyName); + _headers.SetSByte(propertyName, b); + } + + public short GetShort(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetInt16(propertyName); + return 0; + } + + public void SetShort(string propertyName, short i) + { + CheckPropertyName(propertyName); + _headers.SetInt16(propertyName, i); + } + + public int GetInt(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetInt32(propertyName); + return 0; + } + + public void SetInt(string propertyName, int i) + { + CheckPropertyName(propertyName); + _headers.SetInt32(propertyName, i); + } + + public long GetLong(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetInt64(propertyName); + return 0; + } + + public void SetLong(string propertyName, long l) + { + CheckPropertyName(propertyName); + _headers.SetInt64(propertyName, l); + } + + public float GetFloat(String propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetFloat(propertyName); + return 0f; + } + + public void SetFloat(string propertyName, float f) + { + CheckPropertyName(propertyName); + _headers.SetFloat(propertyName, f); + } + + public double GetDouble(string propertyName) + { + CheckPropertyName(propertyName); + if ( Contains(propertyName) ) + return _headers.GetDouble(propertyName); + return 0; + } + + public void SetDouble(string propertyName, double v) + { + CheckPropertyName(propertyName); + _headers.SetDouble(propertyName, v); + } + + public string GetString(string propertyName) + { + CheckPropertyName(propertyName); + return _headers.GetString(propertyName); + } + + public void SetString(string propertyName, string value) + { + CheckPropertyName(propertyName); + _headers.SetString(propertyName, value); + } + + private static 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"); + } + } + + public override string ToString() + { + StringBuilder buf = new StringBuilder("{"); + int i = 0; + foreach ( DictionaryEntry entry in _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); + buf.Append(" = ").Append(entry.Value); + } + } + buf.Append("}"); + return buf.ToString(); + } + + } +} |
