|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // 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)
- }
|