@@ -28,68 +28,78 @@ import (
28
28
)
29
29
30
30
const (
31
- // TMDS port
31
+ // TMDS IP and port
32
+ IPv4 = "127.0.0.1"
32
33
Port = 51679
33
34
)
34
35
35
36
// IPv4 address for TMDS
36
37
func AddressIPv4 () string {
37
- return fmt .Sprintf ("127.0.0.1 :%d" , Port )
38
+ return fmt .Sprintf ("%s :%d" , IPv4 , Port )
38
39
}
39
40
41
+ // Configuration for TMDS
40
42
type Config struct {
41
- listenAddress string
42
- readTimeout time.Duration
43
- writeTimeout time.Duration
44
- steadyStateRate float64
45
- burstRate int
46
- router * mux.Router
43
+ listenAddress string // http server listen address
44
+ readTimeout time.Duration // http server read timeout
45
+ writeTimeout time.Duration // http server write timeout
46
+ steadyStateRate float64 // steady request rate limit
47
+ burstRate int // burst request rate limit
48
+ router * mux.Router // router with routes configured
47
49
}
48
50
51
+ // Function type for updating TMDS config
49
52
type ConfigOpt func (* Config ) error
50
53
54
+ // Set TMDS listen address
51
55
func WithListenAddress (listenAddr string ) ConfigOpt {
52
56
return func (c * Config ) error {
53
57
c .listenAddress = listenAddr
54
58
return nil
55
59
}
56
60
}
57
61
62
+ // Set TMDS read timeout
58
63
func WithReadTimeout (readTimeout time.Duration ) ConfigOpt {
59
64
return func (c * Config ) error {
60
65
c .readTimeout = readTimeout
61
66
return nil
62
67
}
63
68
}
64
69
70
+ // Set TMDS write timeout
65
71
func WithWriteTimeout (writeTimeout time.Duration ) ConfigOpt {
66
72
return func (c * Config ) error {
67
73
c .writeTimeout = writeTimeout
68
74
return nil
69
75
}
70
76
}
71
77
78
+ // Set TMDS steady request rate limit
72
79
func WithSteadyStateRate (steadyStateRate float64 ) ConfigOpt {
73
80
return func (c * Config ) error {
74
81
c .steadyStateRate = steadyStateRate
75
82
return nil
76
83
}
77
84
}
78
85
86
+ // Set TMDS burst request rate limit
79
87
func WithBurstRate (burstRate int ) ConfigOpt {
80
88
return func (c * Config ) error {
81
89
c .burstRate = burstRate
82
90
return nil
83
91
}
84
92
}
85
93
94
+ // Set TMDS router
86
95
func WithRouter (router * mux.Router ) ConfigOpt {
87
96
return func (c * Config ) error {
88
97
c .router = router
89
98
return nil
90
99
}
91
100
}
92
101
102
+ // Create a new HTTP Task Metadata Server (TMDS)
93
103
func NewServer (auditLogger audit.AuditLogger , options ... ConfigOpt ) (* http.Server , error ) {
94
104
config := new (Config )
95
105
for _ , opt := range options {
@@ -98,10 +108,10 @@ func NewServer(auditLogger audit.AuditLogger, options ...ConfigOpt) (*http.Serve
98
108
}
99
109
}
100
110
101
- return setup (auditLogger , * config )
111
+ return setup (auditLogger , config )
102
112
}
103
113
104
- func setup (auditLogger audit.AuditLogger , config Config ) (* http.Server , error ) {
114
+ func setup (auditLogger audit.AuditLogger , config * Config ) (* http.Server , error ) {
105
115
if config .listenAddress == "" {
106
116
return nil , errors .New ("listenAddress cannot be empty" )
107
117
}
0 commit comments