summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go216
1 files changed, 0 insertions, 216 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go
deleted file mode 100644
index b2831bf1877..00000000000
--- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/go.mongodb.org/mongo-driver/mongo/writeconcern/writeconcern.go
+++ /dev/null
@@ -1,216 +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 writeconcern // import "go.mongodb.org/mongo-driver/mongo/writeconcern"
-
-import (
- "errors"
- "time"
-
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/bson/bsontype"
- "go.mongodb.org/mongo-driver/x/bsonx/bsoncore"
-)
-
-// ErrInconsistent indicates that an inconsistent write concern was specified.
-var ErrInconsistent = errors.New("a write concern cannot have both w=0 and j=true")
-
-// ErrEmptyWriteConcern indicates that a write concern has no fields set.
-var ErrEmptyWriteConcern = errors.New("a write concern must have at least one field set")
-
-// ErrNegativeW indicates that a negative integer `w` field was specified.
-var ErrNegativeW = errors.New("write concern `w` field cannot be a negative number")
-
-// ErrNegativeWTimeout indicates that a negative WTimeout was specified.
-var ErrNegativeWTimeout = errors.New("write concern `wtimeout` field cannot be negative")
-
-// WriteConcern describes the level of acknowledgement requested from MongoDB for write operations
-// to a standalone mongod or to replica sets or to sharded clusters.
-type WriteConcern struct {
- w interface{}
- j bool
- wTimeout time.Duration
-}
-
-// Option is an option to provide when creating a WriteConcern.
-type Option func(concern *WriteConcern)
-
-// New constructs a new WriteConcern.
-func New(options ...Option) *WriteConcern {
- concern := &WriteConcern{}
-
- for _, option := range options {
- option(concern)
- }
-
- return concern
-}
-
-// W requests acknowledgement that write operations propagate to the specified number of mongod
-// instances.
-func W(w int) Option {
- return func(concern *WriteConcern) {
- concern.w = w
- }
-}
-
-// WMajority requests acknowledgement that write operations propagate to the majority of mongod
-// instances.
-func WMajority() Option {
- return func(concern *WriteConcern) {
- concern.w = "majority"
- }
-}
-
-// WTagSet requests acknowledgement that write operations propagate to the specified mongod
-// instance.
-func WTagSet(tag string) Option {
- return func(concern *WriteConcern) {
- concern.w = tag
- }
-}
-
-// J requests acknowledgement from MongoDB that write operations are written to
-// the journal.
-func J(j bool) Option {
- return func(concern *WriteConcern) {
- concern.j = j
- }
-}
-
-// WTimeout specifies specifies a time limit for the write concern.
-func WTimeout(d time.Duration) Option {
- return func(concern *WriteConcern) {
- concern.wTimeout = d
- }
-}
-
-// MarshalBSONValue implements the bson.ValueMarshaler interface.
-func (wc *WriteConcern) MarshalBSONValue() (bsontype.Type, []byte, error) {
- if !wc.IsValid() {
- return bsontype.Type(0), nil, ErrInconsistent
- }
-
- var elems []byte
-
- if wc.w != nil {
- switch t := wc.w.(type) {
- case int:
- if t < 0 {
- return bsontype.Type(0), nil, ErrNegativeW
- }
-
- elems = bsoncore.AppendInt32Element(elems, "w", int32(t))
- case string:
- elems = bsoncore.AppendStringElement(elems, "w", string(t))
- }
- }
-
- if wc.j {
- elems = bsoncore.AppendBooleanElement(elems, "j", wc.j)
- }
-
- if wc.wTimeout < 0 {
- return bsontype.Type(0), nil, ErrNegativeWTimeout
- }
-
- if wc.wTimeout != 0 {
- elems = bsoncore.AppendInt64Element(elems, "wtimeout", int64(wc.wTimeout/time.Millisecond))
- }
-
- if len(elems) == 0 {
- return bsontype.Type(0), nil, ErrEmptyWriteConcern
- }
- return bsontype.EmbeddedDocument, bsoncore.BuildDocument(nil, elems), nil
-}
-
-// AcknowledgedValue returns true if a BSON RawValue for a write concern represents an acknowledged write concern.
-// The element's value must be a document representing a write concern.
-func AcknowledgedValue(rawv bson.RawValue) bool {
- doc, ok := bsoncore.Value{Type: rawv.Type, Data: rawv.Value}.DocumentOK()
- if !ok {
- return false
- }
-
- val, err := doc.LookupErr("w")
- if err != nil {
- // key w not found --> acknowledged
- return true
- }
-
- i32, ok := val.Int32OK()
- if !ok {
- return false
- }
- return i32 != 0
-}
-
-// Acknowledged indicates whether or not a write with the given write concern will be acknowledged.
-func (wc *WriteConcern) Acknowledged() bool {
- if wc == nil || wc.j {
- return true
- }
-
- switch v := wc.w.(type) {
- case int:
- if v == 0 {
- return false
- }
- }
-
- return true
-}
-
-// IsValid checks whether the write concern is invalid.
-func (wc *WriteConcern) IsValid() bool {
- if !wc.j {
- return true
- }
-
- switch v := wc.w.(type) {
- case int:
- if v == 0 {
- return false
- }
- }
-
- return true
-}
-
-// GetW returns the write concern w level.
-func (wc *WriteConcern) GetW() interface{} {
- return wc.w
-}
-
-// GetJ returns the write concern journaling level.
-func (wc *WriteConcern) GetJ() bool {
- return wc.j
-}
-
-// GetWTimeout returns the write concern timeout.
-func (wc *WriteConcern) GetWTimeout() time.Duration {
- return wc.wTimeout
-}
-
-// WithOptions returns a copy of this WriteConcern with the options set.
-func (wc *WriteConcern) WithOptions(options ...Option) *WriteConcern {
- if wc == nil {
- return New(options...)
- }
- newWC := &WriteConcern{}
- *newWC = *wc
-
- for _, option := range options {
- option(newWC)
- }
-
- return newWC
-}
-
-// AckWrite returns true if a write concern represents an acknowledged write
-func AckWrite(wc *WriteConcern) bool {
- return wc == nil || wc.Acknowledged()
-}