Skip to content

Commit 403445f

Browse files
Update (*valueReader).ReadElement() to support bVR + streaming
1 parent 5b570de commit 403445f

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

bson/value_reader.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,6 @@ func (vr *valueReader) advanceFrame() {
165165
vr.stack[vr.frame].end = 0
166166
}
167167

168-
func (vr *valueReader) pushElement(t Type) {
169-
vr.advanceFrame()
170-
171-
vr.stack[vr.frame].mode = mElement
172-
vr.stack[vr.frame].vType = t
173-
}
174-
175168
func (vr *valueReader) pushValue(t Type) {
176169
vr.advanceFrame()
177170

@@ -803,7 +796,6 @@ func (vr *valueReader) ReadTimestamp() (uint32, uint32, error) {
803796
}
804797

805798
// ReadUndefined reads a BSON Undefined value, advancing the reader position
806-
807799
// to the end of the Undefined value.
808800
func (vr *valueReader) ReadUndefined() error {
809801
if err := vr.ensureElementValue(TypeUndefined, 0, "ReadUndefined"); err != nil {
@@ -813,6 +805,8 @@ func (vr *valueReader) ReadUndefined() error {
813805
return vr.pop()
814806
}
815807

808+
// ReadElement reads the next element in the BSON document, advancing the
809+
// reader position to the end of the element.
816810
func (vr *valueReader) ReadElement() (string, ValueReader, error) {
817811
switch vr.stack[vr.frame].mode {
818812
case mTopLevel, mDocument, mCodeWithScope:
@@ -826,7 +820,7 @@ func (vr *valueReader) ReadElement() (string, ValueReader, error) {
826820
}
827821

828822
if t == 0 {
829-
if vr.offset != vr.stack[vr.frame].end {
823+
if vr.src.pos() != vr.stack[vr.frame].end {
830824
return "", nil, vr.invalidDocumentLengthError()
831825
}
832826

@@ -839,7 +833,10 @@ func (vr *valueReader) ReadElement() (string, ValueReader, error) {
839833
return "", nil, err
840834
}
841835

842-
vr.pushElement(Type(t))
836+
vr.advanceFrame()
837+
838+
vr.stack[vr.frame].mode = mElement
839+
vr.stack[vr.frame].vType = Type(t)
843840
return name, vr, nil
844841
}
845842

0 commit comments

Comments
 (0)