| // Copyright (C) MongoDB, Inc. 2017-present. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may |
| // not use this file except in compliance with the License. You may obtain |
| // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| |
| package bsonrw |
| |
| import ( |
| "github.com/mongodb/mongo-go-driver/bson/bsontype" |
| "github.com/mongodb/mongo-go-driver/bson/primitive" |
| ) |
| |
| // ArrayReader is implemented by types that allow reading values from a BSON |
| // array. |
| type ArrayReader interface { |
| ReadValue() (ValueReader, error) |
| } |
| |
| // DocumentReader is implemented by types that allow reading elements from a |
| // BSON document. |
| type DocumentReader interface { |
| ReadElement() (string, ValueReader, error) |
| } |
| |
| // ValueReader is a generic interface used to read values from BSON. This type |
| // is implemented by several types with different underlying representations of |
| // BSON, such as a bson.Document, raw BSON bytes, or extended JSON. |
| type ValueReader interface { |
| Type() bsontype.Type |
| Skip() error |
| |
| ReadArray() (ArrayReader, error) |
| ReadBinary() (b []byte, btype byte, err error) |
| ReadBoolean() (bool, error) |
| ReadDocument() (DocumentReader, error) |
| ReadCodeWithScope() (code string, dr DocumentReader, err error) |
| ReadDBPointer() (ns string, oid primitive.ObjectID, err error) |
| ReadDateTime() (int64, error) |
| ReadDecimal128() (primitive.Decimal128, error) |
| ReadDouble() (float64, error) |
| ReadInt32() (int32, error) |
| ReadInt64() (int64, error) |
| ReadJavascript() (code string, err error) |
| ReadMaxKey() error |
| ReadMinKey() error |
| ReadNull() error |
| ReadObjectID() (primitive.ObjectID, error) |
| ReadRegex() (pattern, options string, err error) |
| ReadString() (string, error) |
| ReadSymbol() (symbol string, err error) |
| ReadTimestamp() (t, i uint32, err error) |
| ReadUndefined() error |
| } |
| |
| // BytesReader is a generic interface used to read BSON bytes from a |
| // ValueReader. This imterface is meant to be a superset of ValueReader, so that |
| // types that implement ValueReader may also implement this interface. |
| // |
| // The bytes of the value will be appended to dst. |
| type BytesReader interface { |
| ReadValueBytes(dst []byte) (bsontype.Type, []byte, error) |
| } |