forked from golang/hotime
64 lines
2.1 KiB
Go
64 lines
2.1 KiB
Go
// 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 (
|
|
"go.mongodb.org/mongo-driver/bson/bsontype"
|
|
"go.mongodb.org/mongo-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)
|
|
}
|