summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go99
1 files changed, 0 insertions, 99 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go
deleted file mode 100644
index fe5125d0860..00000000000
--- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/bson/encoder.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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 bson
-
-import (
- "errors"
- "reflect"
- "sync"
-
- "go.mongodb.org/mongo-driver/bson/bsoncodec"
- "go.mongodb.org/mongo-driver/bson/bsonrw"
-)
-
-// This pool is used to keep the allocations of Encoders down. This is only used for the Marshal*
-// methods and is not consumable from outside of this package. The Encoders retrieved from this pool
-// must have both Reset and SetRegistry called on them.
-var encPool = sync.Pool{
- New: func() interface{} {
- return new(Encoder)
- },
-}
-
-// An Encoder writes a serialization format to an output stream. It writes to a bsonrw.ValueWriter
-// as the destination of BSON data.
-type Encoder struct {
- ec bsoncodec.EncodeContext
- vw bsonrw.ValueWriter
-}
-
-// NewEncoder returns a new encoder that uses the DefaultRegistry to write to vw.
-func NewEncoder(vw bsonrw.ValueWriter) (*Encoder, error) {
- if vw == nil {
- return nil, errors.New("cannot create a new Encoder with a nil ValueWriter")
- }
-
- return &Encoder{
- ec: bsoncodec.EncodeContext{Registry: DefaultRegistry},
- vw: vw,
- }, nil
-}
-
-// NewEncoderWithContext returns a new encoder that uses EncodeContext ec to write to vw.
-func NewEncoderWithContext(ec bsoncodec.EncodeContext, vw bsonrw.ValueWriter) (*Encoder, error) {
- if ec.Registry == nil {
- ec = bsoncodec.EncodeContext{Registry: DefaultRegistry}
- }
- if vw == nil {
- return nil, errors.New("cannot create a new Encoder with a nil ValueWriter")
- }
-
- return &Encoder{
- ec: ec,
- vw: vw,
- }, nil
-}
-
-// Encode writes the BSON encoding of val to the stream.
-//
-// The documentation for Marshal contains details about the conversion of Go
-// values to BSON.
-func (e *Encoder) Encode(val interface{}) error {
- if marshaler, ok := val.(Marshaler); ok {
- // TODO(skriptble): Should we have a MarshalAppender interface so that we can have []byte reuse?
- buf, err := marshaler.MarshalBSON()
- if err != nil {
- return err
- }
- return bsonrw.Copier{}.CopyDocumentFromBytes(e.vw, buf)
- }
-
- encoder, err := e.ec.LookupEncoder(reflect.TypeOf(val))
- if err != nil {
- return err
- }
- return encoder.EncodeValue(e.ec, e.vw, reflect.ValueOf(val))
-}
-
-// Reset will reset the state of the encoder, using the same *EncodeContext used in
-// the original construction but using vw.
-func (e *Encoder) Reset(vw bsonrw.ValueWriter) error {
- e.vw = vw
- return nil
-}
-
-// SetRegistry replaces the current registry of the encoder with r.
-func (e *Encoder) SetRegistry(r *bsoncodec.Registry) error {
- e.ec.Registry = r
- return nil
-}
-
-// SetContext replaces the current EncodeContext of the encoder with er.
-func (e *Encoder) SetContext(ec bsoncodec.EncodeContext) error {
- e.ec = ec
- return nil
-}