summaryrefslogtreecommitdiff
path: root/qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs')
-rw-r--r--qpid/dotnet/Qpid.Client/Client/Message/QpidHeaders.cs547
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();
+ }
+
+ }
+}