/// <summary> /// Skips the value (reader must be positioned on a value). /// </summary> public override void SkipValue() { if (disposed) { ThrowObjectDisposedException(); } if (state != BsonReaderState.Value) { var message = string.Format("SkipValue cannot be called when State is: {0}", state); throw new InvalidOperationException(message); } int skip; switch (currentBsonType) { case BsonType.Array: skip = ReadSize() - 4; break; case BsonType.Binary: skip = ReadSize() + 1; break; case BsonType.Boolean: skip = 1; break; case BsonType.DateTime: skip = 8; break; case BsonType.Document: skip = ReadSize() - 4; break; case BsonType.Double: skip = 8; break; case BsonType.Int32: skip = 4; break; case BsonType.Int64: skip = 8; break; case BsonType.JavaScript: skip = ReadSize(); break; case BsonType.JavaScriptWithScope: skip = ReadSize() - 4; break; case BsonType.MaxKey: skip = 0; break; case BsonType.MinKey: skip = 0; break; case BsonType.Null: skip = 0; break; case BsonType.ObjectId: skip = 12; break; case BsonType.RegularExpression: buffer.SkipCString(); buffer.SkipCString(); skip = 0; break; case BsonType.String: skip = ReadSize(); break; case BsonType.Symbol: skip = ReadSize(); break; case BsonType.Timestamp: skip = 8; break; case BsonType.Undefined: skip = 0; break; default: throw new BsonInternalException("Unexpected BsonType"); } buffer.Skip(skip); state = BsonReaderState.Type; }
/// <summary> /// Skips the value (reader must be positioned on a value). /// </summary> public override void SkipValue() { if (Disposed) { ThrowObjectDisposedException(); } if (State != BsonReaderState.Value) { ThrowInvalidState("SkipValue", BsonReaderState.Value); } int skip; switch (CurrentBsonType) { case BsonType.Array: skip = ReadSize() - 4; break; case BsonType.Binary: skip = ReadSize() + 1; break; case BsonType.Boolean: skip = 1; break; case BsonType.DateTime: skip = 8; break; case BsonType.Document: skip = ReadSize() - 4; break; case BsonType.Double: skip = 8; break; case BsonType.Int32: skip = 4; break; case BsonType.Int64: skip = 8; break; case BsonType.JavaScript: skip = ReadSize(); break; case BsonType.JavaScriptWithScope: skip = ReadSize() - 4; break; case BsonType.MaxKey: skip = 0; break; case BsonType.MinKey: skip = 0; break; case BsonType.Null: skip = 0; break; case BsonType.ObjectId: skip = 12; break; case BsonType.RegularExpression: _buffer.SkipCString(); _buffer.SkipCString(); skip = 0; break; case BsonType.String: skip = ReadSize(); break; case BsonType.Symbol: skip = ReadSize(); break; case BsonType.Timestamp: skip = 8; break; case BsonType.Undefined: skip = 0; break; default: throw new BsonInternalException("Unexpected BsonType."); } _buffer.Skip(skip); State = BsonReaderState.Type; }