/// <summary>
/// Reads the end of a BSON array from the reader.
/// </summary>
public override void ReadEndArray()
{
if (Disposed)
{
ThrowObjectDisposedException();
}
if (_context.ContextType != ContextType.Array)
{
ThrowInvalidContextType("ReadEndArray", _context.ContextType, ContextType.Array);
}
if (State == BsonReaderState.Type)
{
ReadBsonType(); // will set state to EndOfArray if at end of array
}
if (State != BsonReaderState.EndOfArray)
{
ThrowInvalidState("ReadEndArray", BsonReaderState.EndOfArray);
}
_context = _context.PopContext(_bsonStream.Position);
switch (_context.ContextType)
{
case ContextType.Array: State = BsonReaderState.Type; break;
case ContextType.Document: State = BsonReaderState.Type; break;
case ContextType.TopLevel: State = BsonReaderState.Initial; break;
default: throw new BsonInternalException("Unexpected ContextType.");
}
}