1 2 using System.Threading.Tasks; 3 4 namespace System.Xml { 5 internal static partial class BinHexEncoder { 6 EncodeAsync( byte[] buffer, int index, int count, XmlWriter writer )7 internal static async Task EncodeAsync( byte[] buffer, int index, int count, XmlWriter writer ) { 8 if ( buffer == null ) { 9 throw new ArgumentNullException( "buffer" ); 10 } 11 if ( index < 0 ) { 12 throw new ArgumentOutOfRangeException( "index" ); 13 } 14 if ( count < 0 ) { 15 throw new ArgumentOutOfRangeException( "count" ); 16 } 17 if ( count > buffer.Length - index ) { 18 throw new ArgumentOutOfRangeException( "count" ); 19 } 20 21 char[] chars = new char[ ( count * 2 ) < CharsChunkSize ? ( count * 2 ) : CharsChunkSize ]; 22 int endIndex = index + count; 23 while ( index < endIndex ) { 24 int cnt = ( count < CharsChunkSize/2 ) ? count : CharsChunkSize/2; 25 int charCount = Encode( buffer, index, cnt, chars ); 26 await writer.WriteRawAsync( chars, 0, charCount ).ConfigureAwait(false); 27 index += cnt; 28 count -= cnt; 29 } 30 } 31 32 } // class 33 } // namespace 34