private ReadElementContentAsBinHex ( byte buffer, int index, int count ) : int | ||
buffer | byte | |
index | int | |
count | int | |
return | int |
public override int ReadElementContentAsBinHex( byte[] buffer, int index, int count ) { if ( ReadState != ReadState.Interactive ) { return 0; } if ( state != State.InReadBinary ) { // forward ReadBinHexChunk calls into the base (wrapped) reader if possible, i.e. if it can read chunks and we // should not check characters if ( base.CanReadBinaryContent && ( !checkCharacters ) ) { readBinaryHelper = null; state = State.InReadBinary; return base.ReadElementContentAsBinHex( buffer, index, count ); } // the wrapped reader cannot read chunks or we are on an element where we should check characters or ignore white spaces else { readBinaryHelper = ReadContentAsBinaryHelper.CreateOrReset( readBinaryHelper, this ); } } else { // forward calls into wrapped reader if ( readBinaryHelper == null ) { return base.ReadElementContentAsBinHex( buffer, index, count ); } } // turn off InReadBinary state in order to have a normal Read() behavior when called from readBinaryHelper state = State.Interactive; // call to the helper int readCount = readBinaryHelper.ReadElementContentAsBinHex(buffer, index, count); // turn on InReadBinary in again and return state = State.InReadBinary; return readCount; }
public override int ReadElementContentAsBinHex(byte[] buffer, int index, int count) { // check arguments if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); } if (buffer.Length - index < count) { throw new ArgumentOutOfRangeException(nameof(count)); } if (ReadState != ReadState.Interactive) { return(0); } if (_state != State.InReadBinary) { // forward ReadBinHexChunk calls into the base (wrapped) reader if possible, i.e. if it can read chunks and we // should not check characters if (base.CanReadBinaryContent && (!_checkCharacters)) { _readBinaryHelper = null; _state = State.InReadBinary; return(base.ReadElementContentAsBinHex(buffer, index, count)); } // the wrapped reader cannot read chunks or we are on an element where we should check characters or ignore whitespace else { _readBinaryHelper = ReadContentAsBinaryHelper.CreateOrReset(_readBinaryHelper, this); } } else { // forward calls into wrapped reader if (_readBinaryHelper == null) { return(base.ReadElementContentAsBinHex(buffer, index, count)); } } // turn off InReadBinary state in order to have a normal Read() behavior when called from readBinaryHelper _state = State.Interactive; // call to the helper int readCount = _readBinaryHelper.ReadElementContentAsBinHex(buffer, index, count); // turn on InReadBinary in again and return _state = State.InReadBinary; return(readCount); }
public override int ReadElementContentAsBinHex(byte[] buffer, int index, int count) { if (ReadState != ReadState.Interactive) { return(0); } // init ReadChunkHelper when called first time if (parsingFunction != ParsingFunction.InReadBinaryContent) { readBinaryHelper = ReadContentAsBinaryHelper.CreateOrReset(readBinaryHelper, outerReader); } // set parsingFunction to Read state in order to have a normal Read() behavior when called from readBinaryHelper parsingFunction = ParsingFunction.Read; // call to the helper int readCount = readBinaryHelper.ReadElementContentAsBinHex(buffer, index, count); // setup parsingFunction parsingFunction = ParsingFunction.InReadBinaryContent; return(readCount); }