diff options
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.go | 99 |
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 -} |