-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmessage_options.go
59 lines (50 loc) · 1.1 KB
/
message_options.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
// Copyright (c) Jim Lambert
// SPDX-License-Identifier: MIT
package gldap
import ber "github.com/go-asn1-ber/asn1-ber"
type messageOptions struct {
withMinChildren *int
withLenChildren *int
withAssertChild *int
withTag *ber.Tag
}
func messageDefaults() messageOptions {
return messageOptions{}
}
func getMessageOpts(opt ...Option) messageOptions {
opts := messageDefaults()
applyOpts(&opts, opt...)
return opts
}
func withMinChildren(min int) Option {
return func(o interface{}) {
if o, ok := o.(*messageOptions); ok {
o.withMinChildren = &min
}
}
}
// we'll see if we start using this again in the near future,
// but for now ignore the warning
//
//nolint:unused
func withLenChildren(len int) Option {
return func(o interface{}) {
if o, ok := o.(*messageOptions); ok {
o.withLenChildren = &len
}
}
}
func withAssertChild(idx int) Option {
return func(o interface{}) {
if o, ok := o.(*messageOptions); ok {
o.withAssertChild = &idx
}
}
}
func withTag(t ber.Tag) Option {
return func(o interface{}) {
if o, ok := o.(*messageOptions); ok {
o.withTag = &t
}
}
}