System.Xml.ReadContentAsBinaryHelper.ReadContentAsBinary C# (CSharp) Méthode

ReadContentAsBinary() private méthode

private ReadContentAsBinary ( byte buffer, int index, int count ) : int
buffer byte
index int
count int
Résultat int
        private int ReadContentAsBinary( byte[] buffer, int index, int count ) {
            Debug.Assert( decoder != null );

            if ( isEnd ) {
                Reset();
                return 0;
            }
            decoder.SetNextOutputBuffer( buffer, index, count );

            for (;;) {
                // use streaming ReadValueChunk if the reader supports it
                if ( canReadValueChunk ) {
                    for (;;) {
                        if ( valueOffset < valueChunkLength ) {
                            int decodedCharsCount = decoder.Decode( valueChunk, valueOffset, valueChunkLength - valueOffset );
                            valueOffset += decodedCharsCount;
                        }
                        if ( decoder.IsFull ) {
                            return decoder.DecodedCount;
                        }
                        Debug.Assert( valueOffset == valueChunkLength );
                        if ( ( valueChunkLength = reader.ReadValueChunk( valueChunk, 0, ChunkSize ) ) == 0 ) {
                            break;
                        }
                        valueOffset = 0;
                    }
                }
                else {
                    // read what is reader.Value
                    string value = reader.Value;
                    int decodedCharsCount = decoder.Decode( value, valueOffset, value.Length - valueOffset );
                    valueOffset += decodedCharsCount;

                    if ( decoder.IsFull ) {
                        return decoder.DecodedCount;
                    }
                }

                valueOffset = 0;

                // move to next textual node in the element content; throw on sub elements
                if ( !MoveToNextContentNode( true ) ) {
                    isEnd = true;
                    return decoder.DecodedCount;
                }
            }
        }