{
public sealed class MessageHeaders : IEnumerable<MessageHeaderInfo>, IEnumerable
{
- static string [] empty_strings = new string [0];
-
static readonly XmlReaderSettings reader_settings;
static MessageHeaders ()
l.Add (header);
}
- public void CopyHeaderFrom (Message m, int index)
+ public void CopyHeaderFrom (Message message, int headerIndex)
{
- CopyHeaderFrom (m.Headers, index);
+ CopyHeaderFrom (message.Headers, headerIndex);
}
public void Clear ()
l.Clear ();
}
- public void CopyHeaderFrom (MessageHeaders headers, int index)
+ public void CopyHeaderFrom (MessageHeaders collection, int headerIndex)
{
- l.Add (headers [index]);
+ l.Add (collection [headerIndex]);
}
- public void CopyHeadersFrom (Message m)
+ public void CopyHeadersFrom (Message message)
{
- CopyHeadersFrom (m.Headers);
+ CopyHeadersFrom (message.Headers);
}
- public void CopyHeadersFrom (MessageHeaders headers)
+ public void CopyHeadersFrom (MessageHeaders collection)
{
- foreach (MessageHeaderInfo h in headers)
+ foreach (MessageHeaderInfo h in collection)
l.Add (h);
}
- public void CopyTo (MessageHeaderInfo [] dst, int index)
+ public void CopyTo (MessageHeaderInfo [] array, int index)
{
- l.CopyTo (dst, index);
+ l.CopyTo (array, index);
}
public int FindHeader (string name, string ns)
public T GetHeader<T> (string name, string ns)
{
- return GetHeader<T> (name, ns, empty_strings);
+ return GetHeader<T> (name, ns, (string []) null);
}
public T GetHeader<T> (string name, string ns, params string [] actors)
int idx = FindHeader (name, ns, actors);
if (idx == -1)
- throw new MessageHeaderException (String.Format ("Header '{0}:{1}' was not found for the argument actors: {2}", ns, name, String.Join (",", actors)));
+ throw new MessageHeaderException (String.Format ("Header '{0}:{1}' was not found for the argument actors: {2}", ns, name, actors == null ? "(null)" : String.Join (",", actors)));
return GetHeader<T> (idx);
}
return GetHeader<T> (idx, serializer);
}
- public XmlDictionaryReader GetReaderAtHeader (int index)
+ public XmlDictionaryReader GetReaderAtHeader (int headerIndex)
{
- if (index >= l.Count)
- throw new ArgumentOutOfRangeException (String.Format ("Index is out of range. Current header count is {0}", index));
- MessageHeader item = (MessageHeader) l [index];
+ if (headerIndex >= l.Count)
+ throw new ArgumentOutOfRangeException (String.Format ("Index is out of range. Current header count is {0}", l.Count));
+ MessageHeader item = (MessageHeader) l [headerIndex];
XmlReader reader =
- item is MessageHeader.RawMessageHeader ?
- ((MessageHeader.RawMessageHeader) item).CreateReader () :
+ item is MessageHeader.XmlMessageHeader ?
+ ((MessageHeader.XmlMessageHeader) item).CreateReader () :
XmlReader.Create (
new StringReader (item.ToString ()),
reader_settings);
throw new NotImplementedException ();
}
- public void Insert (int index, MessageHeader header)
+ public void Insert (int headerIndex, MessageHeader header)
{
- l.Insert (index, header);
+ l.Insert (headerIndex, header);
}
public void RemoveAll (string name, string ns)
l.RemoveAt (l.Count - 1);
}
- public void RemoveAt (int index)
+ public void RemoveAt (int headerIndex)
{
- l.RemoveAt (index);
+ l.RemoveAt (headerIndex);
}
IEnumerator IEnumerable.GetEnumerator ()
return ((IEnumerable) l).GetEnumerator ();
}
- public void WriteHeader (int index, XmlDictionaryWriter writer)
+ public void WriteHeader (int headerIndex, XmlDictionaryWriter writer)
{
if (version.Envelope == EnvelopeVersion.None)
return;
- WriteStartHeader (index, writer);
- WriteHeaderContents (index, writer);
+ WriteStartHeader (headerIndex, writer);
+ WriteHeaderContents (headerIndex, writer);
writer.WriteEndElement ();
}
- public void WriteHeader (int index, XmlWriter writer)
+ public void WriteHeader (int headerIndex, XmlWriter writer)
{
- WriteHeader (index, XmlDictionaryWriter.CreateDictionaryWriter (writer));
+ WriteHeader (headerIndex, XmlDictionaryWriter.CreateDictionaryWriter (writer));
}
- public void WriteHeaderContents (int index, XmlDictionaryWriter writer)
+ public void WriteHeaderContents (int headerIndex, XmlDictionaryWriter writer)
{
- if (index > l.Count)
- throw new ArgumentOutOfRangeException ("There is no header at position " + index + ".");
+ if (headerIndex > l.Count)
+ throw new ArgumentOutOfRangeException ("There is no header at position " + headerIndex + ".");
- MessageHeader h = l [index] as MessageHeader;
+ MessageHeader h = l [headerIndex] as MessageHeader;
h.WriteHeaderContents (writer, version);
}
- public void WriteHeaderContents (int index, XmlWriter writer)
+ public void WriteHeaderContents (int headerIndex, XmlWriter writer)
{
- WriteHeaderContents (index, XmlDictionaryWriter.CreateDictionaryWriter (writer));
+ WriteHeaderContents (headerIndex, XmlDictionaryWriter.CreateDictionaryWriter (writer));
}
- public void WriteStartHeader (int index, XmlDictionaryWriter writer)
+ public void WriteStartHeader (int headerIndex, XmlDictionaryWriter writer)
{
- if (index > l.Count)
- throw new ArgumentOutOfRangeException ("There is no header at position " + index + ".");
+ if (headerIndex > l.Count)
+ throw new ArgumentOutOfRangeException ("There is no header at position " + headerIndex + ".");
- MessageHeader h = l [index] as MessageHeader;
+ MessageHeader h = l [headerIndex] as MessageHeader;
h.WriteStartHeader (writer, version);
}
- public void WriteStartHeader (int index, XmlWriter writer)
+ public void WriteStartHeader (int headerIndex, XmlWriter writer)
{
- WriteStartHeader (index, XmlDictionaryWriter.CreateDictionaryWriter (writer));
+ WriteStartHeader (headerIndex, XmlDictionaryWriter.CreateDictionaryWriter (writer));
}
public string Action {
void AddEndpointAddressHeader (string name, string ns, EndpointAddress address)
{
- RemoveAll ("FaultTo", Constants.WsaNamespace);
if (address == null)
return;
if (MessageVersion.Addressing.Equals (AddressingVersion.WSAddressing10))
Add (MessageHeader.CreateHeader (name, ns, EndpointAddress10.FromEndpointAddress (address)));
-#if !NET_2_1
+#if !MOBILE
else if (MessageVersion.Addressing.Equals (AddressingVersion.WSAddressingAugust2004))
Add (MessageHeader.CreateHeader (name, ns, EndpointAddressAugust2004.FromEndpointAddress (address)));
#endif
public EndpointAddress FaultTo {
get {
- int idx = FindHeader ("FaultTo", Constants.WsaNamespace);
+ int idx = FindHeader ("FaultTo", version.Addressing.Namespace);
return idx < 0 ? null : GetHeader<EndpointAddress> (idx);
}
- set { AddEndpointAddressHeader ("FaultTo", Constants.WsaNamespace, value); }
+ set {
+ RemoveAll ("FaultTo", version.Addressing.Namespace);
+ if (value != null)
+ AddEndpointAddressHeader ("FaultTo", version.Addressing.Namespace, value);
+ }
}
public EndpointAddress From {
int idx = FindHeader ("From", version.Addressing.Namespace);
return idx < 0 ? null : GetHeader<EndpointAddress> (idx);
}
- set { AddEndpointAddressHeader ("From", Constants.WsaNamespace, value); }
+ set {
+ RemoveAll ("From", version.Addressing.Namespace);
+ if (value != null)
+ AddEndpointAddressHeader ("From", version.Addressing.Namespace, value);
+ }
}
public MessageHeaderInfo this [int index] {
public UniqueId MessageId {
get {
- int idx = FindHeader ("MessageID", Constants.WsaNamespace);
+ int idx = FindHeader ("MessageID", version.Addressing.Namespace);
return idx < 0 ? null : new UniqueId (GetHeader<string> (idx));
}
set {
if (version.Addressing == AddressingVersion.None && value != null)
throw new InvalidOperationException ("WS-Addressing header is not allowed for AddressingVersion.None");
- RemoveAll ("MessageID", Constants.WsaNamespace);
+ RemoveAll ("MessageID", version.Addressing.Namespace);
if (value != null)
- Add (MessageHeader.CreateHeader ("MessageID", Constants.WsaNamespace, value));
+ Add (MessageHeader.CreateHeader ("MessageID", version.Addressing.Namespace, value));
}
}
public UniqueId RelatesTo {
get {
- int idx = FindHeader ("RelatesTo", Constants.WsaNamespace);
+ int idx = FindHeader ("RelatesTo", version.Addressing.Namespace);
return idx < 0 ? null : new UniqueId (GetHeader<string> (idx));
}
set {
if (version.Addressing == AddressingVersion.None && value != null)
throw new InvalidOperationException ("WS-Addressing header is not allowed for AddressingVersion.None");
- RemoveAll ("MessageID", Constants.WsaNamespace);
+ RemoveAll ("MessageID", version.Addressing.Namespace);
if (value != null)
- Add (MessageHeader.CreateHeader ("RelatesTo", Constants.WsaNamespace, value));
+ Add (MessageHeader.CreateHeader ("RelatesTo", version.Addressing.Namespace, value));
}
}
public EndpointAddress ReplyTo {
get {
- int idx = FindHeader ("ReplyTo", Constants.WsaNamespace);
+ int idx = FindHeader ("ReplyTo", version.Addressing.Namespace);
return idx < 0 ? null : GetHeader<EndpointAddress> (idx);
}
- set { AddEndpointAddressHeader ("ReplyTo", Constants.WsaNamespace, value); }
+ set {
+ RemoveAll ("ReplyTo", version.Addressing.Namespace);
+ if (value != null)
+ AddEndpointAddressHeader ("ReplyTo", version.Addressing.Namespace, value);
+ }
}
public Uri To {