-
Notifications
You must be signed in to change notification settings - Fork 52
/
rpc_extensions.go
151 lines (138 loc) · 4.74 KB
/
rpc_extensions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package protocol
import (
pb "go.gazette.dev/core/broker/protocol"
)
// Validate returns an error if the StatRequest is not well-formed.
func (m *StatRequest) Validate() error {
if m.Header != nil {
if err := m.Header.Validate(); err != nil {
return pb.ExtendContext(err, "Header")
}
}
if err := m.Shard.Validate(); err != nil {
return pb.ExtendContext(err, "Shard")
} else if err = pb.Offsets(m.ReadThrough).Validate(); err != nil {
return pb.ExtendContext(err, "ReadThrough")
}
return nil
}
// Validate returns an error if the StatResponse is not well-formed.
func (m *StatResponse) Validate() error {
if err := m.Status.Validate(); err != nil {
return pb.ExtendContext(err, "Status")
} else if err = m.Header.Validate(); err != nil {
return pb.ExtendContext(err, "Header")
} else if err = pb.Offsets(m.ReadThrough).Validate(); err != nil {
return pb.ExtendContext(err, "ReadThrough")
} else if err = pb.Offsets(m.PublishAt).Validate(); err != nil {
return pb.ExtendContext(err, "PublishAt")
}
return nil
}
// Validate returns an error if the ListRequest is not well-formed.
func (m *ListRequest) Validate() error {
if err := m.Selector.Validate(); err != nil {
return pb.ExtendContext(err, "Selector")
}
return nil
}
// Validate returns an error if the ListResponse is not well-formed.
func (m *ListResponse) Validate() error {
if err := m.Status.Validate(); err != nil {
return pb.ExtendContext(err, "Status")
} else if err = m.Header.Validate(); err != nil {
return pb.ExtendContext(err, "Header")
}
for i, shard := range m.Shards {
if err := shard.Validate(); err != nil {
return pb.ExtendContext(err, "Shards[%d]", i)
}
}
return nil
}
// Validate returns an error if the ListResponse_Shard is not well-formed.
func (m *ListResponse_Shard) Validate() error {
if err := m.Spec.Validate(); err != nil {
return pb.ExtendContext(err, "Spec")
} else if m.ModRevision <= 0 {
return pb.NewValidationError("invalid ModRevision (%d; expected > 0)", m.ModRevision)
} else if err = m.Route.Validate(); err != nil {
return pb.ExtendContext(err, "Route")
} else if l1, l2 := len(m.Route.Members), len(m.Status); l1 != l2 {
return pb.NewValidationError("length of Route.Members and Status are not equal (%d vs %d)", l1, l2)
}
for i, status := range m.Status {
if err := status.Validate(); err != nil {
return pb.ExtendContext(err, "Status[%d]", i)
}
}
return nil
}
// Validate returns an error if the ApplyRequest is not well-formed.
func (m *ApplyRequest) Validate() error {
for i, change := range m.Changes {
if err := change.Validate(); err != nil {
return pb.ExtendContext(err, "Changes[%d]", i)
}
}
return nil
}
// Validate returns an error if the ApplyRequest_Change is not well-formed.
func (m *ApplyRequest_Change) Validate() error {
if m.Upsert != nil {
if m.Delete != "" {
return pb.NewValidationError("both Upsert and Delete are set (expected exactly one)")
} else if err := m.Upsert.Validate(); err != nil {
return pb.ExtendContext(err, "Upsert")
} else if m.ExpectModRevision < 0 && (m.ExpectModRevision != -1) {
return pb.NewValidationError("invalid ExpectModRevision (%d; expected >= 0 or -1)", m.ExpectModRevision)
}
} else if m.Delete != "" {
if err := m.Delete.Validate(); err != nil {
return pb.ExtendContext(err, "Delete")
} else if m.ExpectModRevision <= 0 && (m.ExpectModRevision != -1) {
return pb.NewValidationError("invalid ExpectModRevision (%d; expected > 0 or -1)", m.ExpectModRevision)
}
} else {
return pb.NewValidationError("neither Upsert nor Delete are set (expected exactly one)")
}
return nil
}
// Validate returns an error if the ApplyResponse is not well-formed.
func (m *ApplyResponse) Validate() error {
if err := m.Status.Validate(); err != nil {
return pb.ExtendContext(err, "Status")
} else if err = m.Header.Validate(); err != nil {
return pb.ExtendContext(err, "Header")
}
return nil
}
// Validate returns an error if the HintsRequest is not well-formed.
func (m *GetHintsRequest) Validate() error {
if err := m.Shard.Validate(); err != nil {
return pb.ExtendContext(err, "Shard")
}
return nil
}
// Validate returns an error if the HintsResponse is not well-formed.
func (m *GetHintsResponse) Validate() error {
if err := m.Status.Validate(); err != nil {
return pb.ExtendContext(err, "Status")
}
if err := m.PrimaryHints.Validate(); err != nil {
return pb.ExtendContext(err, "primary hints")
}
for _, hints := range m.BackupHints {
if err := hints.Validate(); err != nil {
return pb.ExtendContext(err, "backup hints")
}
}
return nil
}
// Validate returns an error if the GetHintsResponse_ResponseHints is not well-formed.
func (m GetHintsResponse_ResponseHints) Validate() error {
if m.Hints != nil {
return m.Hints.Validate()
}
return nil
}