...
1
2
3
4
5
6
7 package readpref
8
9 import (
10 "fmt"
11 "strings"
12 )
13
14
15 type Mode uint8
16
17
18 const (
19 _ Mode = iota
20
21
22
23 PrimaryMode
24
25
26
27 PrimaryPreferredMode
28
29
30 SecondaryMode
31
32
33
34 SecondaryPreferredMode
35
36
37 NearestMode
38 )
39
40
41
42 func ModeFromString(mode string) (Mode, error) {
43 switch strings.ToLower(mode) {
44 case "primary":
45 return PrimaryMode, nil
46 case "primarypreferred":
47 return PrimaryPreferredMode, nil
48 case "secondary":
49 return SecondaryMode, nil
50 case "secondarypreferred":
51 return SecondaryPreferredMode, nil
52 case "nearest":
53 return NearestMode, nil
54 }
55 return Mode(0), fmt.Errorf("unknown read preference %v", mode)
56 }
57
58
59 func (mode Mode) String() string {
60 switch mode {
61 case PrimaryMode:
62 return "primary"
63 case PrimaryPreferredMode:
64 return "primaryPreferred"
65 case SecondaryMode:
66 return "secondary"
67 case SecondaryPreferredMode:
68 return "secondaryPreferred"
69 case NearestMode:
70 return "nearest"
71 default:
72 return "unknown"
73 }
74 }
75
76
77 func (mode Mode) IsValid() bool {
78 switch mode {
79 case PrimaryMode,
80 PrimaryPreferredMode,
81 SecondaryMode,
82 SecondaryPreferredMode,
83 NearestMode:
84 return true
85 default:
86 return false
87 }
88 }
89
View as plain text