OnWriteBodyContents (writer);
else if (Version.Envelope == EnvelopeVersion.None)
WriteXsiNil (writer);
+ State = MessageState.Written;
}
public void WriteMessage (XmlDictionaryWriter writer)
{
if (State != MessageState.Created)
throw new InvalidOperationException (String.Format ("The message is already at {0} state", State));
- State = MessageState.Written;
OnWriteMessage (writer);
}
public void WriteStartBody (XmlDictionaryWriter writer)
{
- if (State != MessageState.Created && State != MessageState.Written)
+ if (State != MessageState.Created)
throw new InvalidOperationException (String.Format ("The message is already at {0} state", State));
- State = MessageState.Written;
OnWriteStartBody (writer);
}
public void WriteStartEnvelope (XmlDictionaryWriter writer)
{
- if (State != MessageState.Created && State != MessageState.Written)
+ if (State != MessageState.Created)
throw new InvalidOperationException (String.Format ("The message is already at {0} state", State));
- State = MessageState.Written;
OnWriteStartEnvelope (writer);
}
{
}
- [MonoTODO]
+ [MonoTODO ("use maxBufferSize")]
protected virtual MessageBuffer OnCreateBufferedCopy (
int maxBufferSize)
{
-#if NET_2_1
+ var s = new XmlWriterSettings ();
+ s.OmitXmlDeclaration = true;
+ s.ConformanceLevel = ConformanceLevel.Auto;
StringWriter sw = new StringWriter ();
- using (XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (sw)))
- WriteMessage (w);
- return new DefaultMessageBuffer (maxBufferSize, Headers, Properties, new XmlReaderBodyWriter (sw.ToString ()), false);
-#else
- DTMXPathDocumentWriter2 pw = new DTMXPathDocumentWriter2 (new NameTable (), 100);
- XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter (pw);
- WriteMessage (w);
- return new XPathMessageBuffer (pw.CreateDocument (), Version, Headers.Count, this.Properties);
-#endif
+ using (XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (sw, s)))
+ WriteBodyContents (w);
+ var headers = new MessageHeaders (Headers);
+ var props = new MessageProperties (Properties);
+ return new DefaultMessageBuffer (maxBufferSize, headers, props, new XmlReaderBodyWriter (sw.ToString ()), false);
}
protected virtual string OnGetBodyAttribute (
return null;
}
- [MonoTODO]
protected virtual XmlDictionaryReader OnGetReaderAtBodyContents ()
{
- XmlDictionaryWriter writer = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (TextWriter.Null));
- if (Version.Envelope != EnvelopeVersion.None) {
- WriteStartEnvelope (writer);
- OnWriteStartHeaders (writer);
- for (int i = 0, count = Headers.Count; i < count; i++)
- Headers.WriteHeader (i, writer);
- writer.WriteEndElement ();
- WriteStartBody (writer);
- }
-
+ var ws = new XmlWriterSettings ();
+ ws.ConformanceLevel = ConformanceLevel.Auto;
StringWriter sw = new StringWriter ();
- using (XmlDictionaryWriter body = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (sw))) {
+ using (XmlDictionaryWriter body = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (sw, ws))) {
WriteBodyContents (body);
}
- if (Version.Envelope != EnvelopeVersion.None) {
- writer.WriteEndElement ();
- writer.WriteEndElement ();
- }
-
- return XmlDictionaryReader.CreateDictionaryReader (XmlReader.Create (new StringReader (sw.ToString ())));
+ var rs = new XmlReaderSettings ();
+ rs.ConformanceLevel = ConformanceLevel.Auto;
+ return XmlDictionaryReader.CreateDictionaryReader (XmlReader.Create (new StringReader (sw.ToString ()), rs));
}
protected abstract void OnWriteBodyContents (
writer.WriteEndElement ();
}
- [MonoTODO]
protected virtual void OnWriteStartBody (
XmlDictionaryWriter writer)
{