seba-365 - implemented dep
Change-Id: Ia6226d50e7615935a0c8876809a687427ff88c22
diff --git a/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/mode.go b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/mode.go
new file mode 100644
index 0000000..e7030c6
--- /dev/null
+++ b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/mode.go
@@ -0,0 +1,56 @@
+// 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 readpref
+
+import (
+ "fmt"
+ "strings"
+)
+
+// Mode indicates the user's preference on reads.
+type Mode uint8
+
+// Mode constants
+const (
+ _ Mode = iota
+ // PrimaryMode indicates that only a primary is
+ // considered for reading. This is the default
+ // mode.
+ PrimaryMode
+ // PrimaryPreferredMode indicates that if a primary
+ // is available, use it; otherwise, eligible
+ // secondaries will be considered.
+ PrimaryPreferredMode
+ // SecondaryMode indicates that only secondaries
+ // should be considered.
+ SecondaryMode
+ // SecondaryPreferredMode indicates that only secondaries
+ // should be considered when one is available. If none
+ // are available, then a primary will be considered.
+ SecondaryPreferredMode
+ // NearestMode indicates that all primaries and secondaries
+ // will be considered.
+ NearestMode
+)
+
+// ModeFromString returns a mode corresponding to
+// mode.
+func ModeFromString(mode string) (Mode, error) {
+ switch strings.ToLower(mode) {
+ case "primary":
+ return PrimaryMode, nil
+ case "primarypreferred":
+ return PrimaryPreferredMode, nil
+ case "secondary":
+ return SecondaryMode, nil
+ case "secondarypreferred":
+ return SecondaryPreferredMode, nil
+ case "nearest":
+ return NearestMode, nil
+ }
+ return Mode(0), fmt.Errorf("unknown read preference %v", mode)
+}
diff --git a/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/options.go b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/options.go
new file mode 100644
index 0000000..a81cf3e
--- /dev/null
+++ b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/options.go
@@ -0,0 +1,60 @@
+// 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 readpref
+
+import (
+ "errors"
+ "time"
+
+ "github.com/mongodb/mongo-go-driver/tag"
+)
+
+// ErrInvalidTagSet indicates that an invalid set of tags was specified.
+var ErrInvalidTagSet = errors.New("an even number of tags must be specified")
+
+// Option configures a read preference
+type Option func(*ReadPref) error
+
+// WithMaxStaleness sets the maximum staleness a
+// server is allowed.
+func WithMaxStaleness(ms time.Duration) Option {
+ return func(rp *ReadPref) error {
+ rp.maxStaleness = ms
+ rp.maxStalenessSet = true
+ return nil
+ }
+}
+
+// WithTags sets a single tag set used to match
+// a server. The last call to WithTags or WithTagSets
+// overrides all previous calls to either method.
+func WithTags(tags ...string) Option {
+ return func(rp *ReadPref) error {
+ length := len(tags)
+ if length < 2 || length%2 != 0 {
+ return ErrInvalidTagSet
+ }
+
+ tagset := make(tag.Set, 0, length/2)
+
+ for i := 1; i < length; i += 2 {
+ tagset = append(tagset, tag.Tag{Name: tags[i-1], Value: tags[i]})
+ }
+
+ return WithTagSets(tagset)(rp)
+ }
+}
+
+// WithTagSets sets the tag sets used to match
+// a server. The last call to WithTags or WithTagSets
+// overrides all previous calls to either method.
+func WithTagSets(tagSets ...tag.Set) Option {
+ return func(rp *ReadPref) error {
+ rp.tagSets = tagSets
+ return nil
+ }
+}
diff --git a/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/readpref.go b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/readpref.go
new file mode 100644
index 0000000..0d624ff
--- /dev/null
+++ b/vendor/github.com/mongodb/mongo-go-driver/mongo/readpref/readpref.go
@@ -0,0 +1,99 @@
+// 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 readpref
+
+import (
+ "errors"
+ "time"
+
+ "github.com/mongodb/mongo-go-driver/tag"
+)
+
+var (
+ errInvalidReadPreference = errors.New("can not specify tags or max staleness on primary")
+)
+
+var primary = ReadPref{mode: PrimaryMode}
+
+// Primary constructs a read preference with a PrimaryMode.
+func Primary() *ReadPref {
+ return &primary
+}
+
+// PrimaryPreferred constructs a read preference with a PrimaryPreferredMode.
+func PrimaryPreferred(opts ...Option) *ReadPref {
+ // New only returns an error with a mode of Primary
+ rp, _ := New(PrimaryPreferredMode, opts...)
+ return rp
+}
+
+// SecondaryPreferred constructs a read preference with a SecondaryPreferredMode.
+func SecondaryPreferred(opts ...Option) *ReadPref {
+ // New only returns an error with a mode of Primary
+ rp, _ := New(SecondaryPreferredMode, opts...)
+ return rp
+}
+
+// Secondary constructs a read preference with a SecondaryMode.
+func Secondary(opts ...Option) *ReadPref {
+ // New only returns an error with a mode of Primary
+ rp, _ := New(SecondaryMode, opts...)
+ return rp
+}
+
+// Nearest constructs a read preference with a NearestMode.
+func Nearest(opts ...Option) *ReadPref {
+ // New only returns an error with a mode of Primary
+ rp, _ := New(NearestMode, opts...)
+ return rp
+}
+
+// New creates a new ReadPref.
+func New(mode Mode, opts ...Option) (*ReadPref, error) {
+ rp := &ReadPref{
+ mode: mode,
+ }
+
+ if mode == PrimaryMode && len(opts) != 0 {
+ return nil, errInvalidReadPreference
+ }
+
+ for _, opt := range opts {
+ err := opt(rp)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return rp, nil
+}
+
+// ReadPref determines which servers are considered suitable for read operations.
+type ReadPref struct {
+ maxStaleness time.Duration
+ maxStalenessSet bool
+ mode Mode
+ tagSets []tag.Set
+}
+
+// MaxStaleness is the maximum amount of time to allow
+// a server to be considered eligible for selection. The
+// second return value indicates if this value has been set.
+func (r *ReadPref) MaxStaleness() (time.Duration, bool) {
+ return r.maxStaleness, r.maxStalenessSet
+}
+
+// Mode indicates the mode of the read preference.
+func (r *ReadPref) Mode() Mode {
+ return r.mode
+}
+
+// TagSets are multiple tag sets indicating
+// which servers should be considered.
+func (r *ReadPref) TagSets() []tag.Set {
+ return r.tagSets
+}