| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- //------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.Xml
- {
- using System.IO;
- using System.Collections;
- using System.Text;
- using System.Diagnostics;
- using System.Globalization;
- using System.Runtime.Serialization;
- using System.Runtime;
- using System.Threading;
- using System.Collections.Generic;
- abstract class XmlNodeWriter
- {
- static XmlNodeWriter nullNodeWriter;
- static public XmlNodeWriter Null
- {
- get
- {
- if (nullNodeWriter == null)
- nullNodeWriter = new XmlNullNodeWriter();
- return nullNodeWriter;
- }
- }
- internal virtual AsyncCompletionResult WriteBase64TextAsync(AsyncEventArgs<XmlNodeWriterWriteBase64TextArgs> state)
- {
- // We do not guard this invocation. The caller of the NodeWriter should ensure that that
- // they override the FastAsync guard clause for the XmlDictionaryWriter and that the
- // nodeWriter has an implemenation for WriteBase64TextAsync.
- throw Fx.AssertAndThrow("WriteBase64TextAsync not implemented.");
- }
- public virtual IAsyncResult BeginWriteBase64Text(byte[] trailBuffer, int trailCount, byte[] buffer, int offset, int count, AsyncCallback callback, object state)
- {
- return new WriteBase64TextAsyncResult(trailBuffer, trailCount, buffer, offset, count, this, callback, state);
- }
- public virtual void EndWriteBase64Text(IAsyncResult result)
- {
- WriteBase64TextAsyncResult.End(result);
- }
- public abstract void Flush();
- public abstract void Close();
- public abstract void WriteDeclaration();
- public abstract void WriteComment(string text);
- public abstract void WriteCData(string text);
- public abstract void WriteStartElement(string prefix, string localName);
- public virtual void WriteStartElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength)
- {
- WriteStartElement(Encoding.UTF8.GetString(prefixBuffer, prefixOffset, prefixLength), Encoding.UTF8.GetString(localNameBuffer, localNameOffset, localNameLength));
- }
- public abstract void WriteStartElement(string prefix, XmlDictionaryString localName);
- public abstract void WriteEndStartElement(bool isEmpty);
- public abstract void WriteEndElement(string prefix, string localName);
- public virtual void WriteEndElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength)
- {
- WriteEndElement(Encoding.UTF8.GetString(prefixBuffer, prefixOffset, prefixLength), Encoding.UTF8.GetString(localNameBuffer, localNameOffset, localNameLength));
- }
- public abstract void WriteXmlnsAttribute(string prefix, string ns);
- public virtual void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] nsBuffer, int nsOffset, int nsLength)
- {
- WriteXmlnsAttribute(Encoding.UTF8.GetString(prefixBuffer, prefixOffset, prefixLength), Encoding.UTF8.GetString(nsBuffer, nsOffset, nsLength));
- }
- public abstract void WriteXmlnsAttribute(string prefix, XmlDictionaryString ns);
- public abstract void WriteStartAttribute(string prefix, string localName);
- public virtual void WriteStartAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength)
- {
- WriteStartAttribute(Encoding.UTF8.GetString(prefixBuffer, prefixOffset, prefixLength), Encoding.UTF8.GetString(localNameBuffer, localNameOffset, localNameLength));
- }
- public abstract void WriteStartAttribute(string prefix, XmlDictionaryString localName);
- public abstract void WriteEndAttribute();
- public abstract void WriteCharEntity(int ch);
- public abstract void WriteEscapedText(string value);
- public abstract void WriteEscapedText(XmlDictionaryString value);
- public abstract void WriteEscapedText(char[] chars, int offset, int count);
- public abstract void WriteEscapedText(byte[] buffer, int offset, int count);
- public abstract void WriteText(string value);
- public abstract void WriteText(XmlDictionaryString value);
- public abstract void WriteText(char[] chars, int offset, int count);
- public abstract void WriteText(byte[] buffer, int offset, int count);
- public abstract void WriteInt32Text(int value);
- public abstract void WriteInt64Text(Int64 value);
- public abstract void WriteBoolText(bool value);
- public abstract void WriteUInt64Text(UInt64 value);
- public abstract void WriteFloatText(float value);
- public abstract void WriteDoubleText(double value);
- public abstract void WriteDecimalText(decimal value);
- public abstract void WriteDateTimeText(DateTime value);
- public abstract void WriteUniqueIdText(UniqueId value);
- public abstract void WriteTimeSpanText(TimeSpan value);
- public abstract void WriteGuidText(Guid value);
- public abstract void WriteStartListText();
- public abstract void WriteListSeparator();
- public abstract void WriteEndListText();
- public abstract void WriteBase64Text(byte[] trailBuffer, int trailCount, byte[] buffer, int offset, int count);
- public abstract void WriteQualifiedName(string prefix, XmlDictionaryString localName);
- class XmlNullNodeWriter : XmlNodeWriter
- {
- public override void Flush() { }
- public override void Close() { }
- public override void WriteDeclaration() { }
- public override void WriteComment(string text) { }
- public override void WriteCData(string text) { }
- public override void WriteStartElement(string prefix, string localName) { }
- public override void WriteStartElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { }
- public override void WriteStartElement(string prefix, XmlDictionaryString localName) { }
- public override void WriteEndStartElement(bool isEmpty) { }
- public override void WriteEndElement(string prefix, string localName) { }
- public override void WriteEndElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { }
- public override void WriteXmlnsAttribute(string prefix, string ns) { }
- public override void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] nsBuffer, int nsOffset, int nsLength) { }
- public override void WriteXmlnsAttribute(string prefix, XmlDictionaryString ns) { }
- public override void WriteStartAttribute(string prefix, string localName) { }
- public override void WriteStartAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { }
- public override void WriteStartAttribute(string prefix, XmlDictionaryString localName) { }
- public override void WriteEndAttribute() { }
- public override void WriteCharEntity(int ch) { }
- public override void WriteEscapedText(string value) { }
- public override void WriteEscapedText(XmlDictionaryString value) { }
- public override void WriteEscapedText(char[] chars, int offset, int count) { }
- public override void WriteEscapedText(byte[] buffer, int offset, int count) { }
- public override void WriteText(string value) { }
- public override void WriteText(XmlDictionaryString value) { }
- public override void WriteText(char[] chars, int offset, int count) { }
- public override void WriteText(byte[] buffer, int offset, int count) { }
- public override void WriteInt32Text(int value) { }
- public override void WriteInt64Text(Int64 value) { }
- public override void WriteBoolText(bool value) { }
- public override void WriteUInt64Text(UInt64 value) { }
- public override void WriteFloatText(float value) { }
- public override void WriteDoubleText(double value) { }
- public override void WriteDecimalText(decimal value) { }
- public override void WriteDateTimeText(DateTime value) { }
- public override void WriteUniqueIdText(UniqueId value) { }
- public override void WriteTimeSpanText(TimeSpan value) { }
- public override void WriteGuidText(Guid value) { }
- public override void WriteStartListText() { }
- public override void WriteListSeparator() { }
- public override void WriteEndListText() { }
- public override void WriteBase64Text(byte[] trailBuffer, int trailCount, byte[] buffer, int offset, int count) { }
- public override void WriteQualifiedName(string prefix, XmlDictionaryString localName) { }
- }
- class WriteBase64TextAsyncResult : ScheduleActionItemAsyncResult
- {
- byte[] trailBuffer;
- int trailCount;
- byte[] buffer;
- int offset;
- int count;
- XmlNodeWriter nodeWriter;
- public WriteBase64TextAsyncResult(byte[] trailBuffer, int trailCount, byte[] buffer, int offset, int count, XmlNodeWriter nodeWriter, AsyncCallback callback, object state)
- : base(callback, state)
- {
- Fx.Assert(nodeWriter != null, "nodeWriter should never be null");
- this.trailBuffer = trailBuffer;
- this.trailCount = trailCount;
- this.buffer = buffer;
- this.offset = offset;
- this.count = count;
- this.nodeWriter = nodeWriter;
- Schedule();
- }
- protected override void OnDoWork()
- {
- this.nodeWriter.WriteBase64Text(this.trailBuffer, this.trailCount, this.buffer, this.offset, this.count);
- }
- }
- }
- }
|