/
web_server_config.go
88 lines (72 loc) · 2.54 KB
/
web_server_config.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
package handler
import (
logV1 "github.com/ClessLi/component-base/pkg/log/v1"
"sync"
"github.com/go-kit/kit/transport/grpc"
epv1 "github.com/ClessLi/bifrost/internal/bifrost/endpoint/v1"
"github.com/ClessLi/bifrost/internal/bifrost/transport/v1/decoder"
"github.com/ClessLi/bifrost/internal/bifrost/transport/v1/encoder"
)
type WebServerConfigHandlers interface {
HandlerGetServerNames() grpc.Handler
HandlerGet() grpc.Handler
HandlerUpdate() grpc.Handler
}
var _ WebServerConfigHandlers = &webServerConfigHandlers{}
type webServerConfigHandlers struct {
onceGetServerNames sync.Once
onceGet sync.Once
onceUpdate sync.Once
singletonHandlerGetServerNames grpc.Handler
singletonHandlerGet grpc.Handler
singletonHandlerUpdate grpc.Handler
eps epv1.WebServerConfigEndpoints
decoder decoder.Decoder
encoder encoder.Encoder
}
func (wsc *webServerConfigHandlers) HandlerGetServerNames() grpc.Handler {
wsc.onceGetServerNames.Do(func() {
if wsc.singletonHandlerGetServerNames == nil {
wsc.singletonHandlerGetServerNames = NewHandler(wsc.eps.EndpointGetServerNames(), wsc.decoder, wsc.encoder)
}
})
if wsc.singletonHandlerGetServerNames == nil {
logV1.Fatal("web server config handler `GetServerNames` is nil")
return nil
}
return wsc.singletonHandlerGetServerNames
}
func (wsc *webServerConfigHandlers) HandlerGet() grpc.Handler {
wsc.onceGet.Do(func() {
if wsc.singletonHandlerGet == nil {
wsc.singletonHandlerGet = NewHandler(wsc.eps.EndpointGet(), wsc.decoder, wsc.encoder)
}
})
if wsc.singletonHandlerGet == nil {
logV1.Fatal("web server config handler `Get` is nil")
return nil
}
return wsc.singletonHandlerGet
}
func (wsc *webServerConfigHandlers) HandlerUpdate() grpc.Handler {
wsc.onceUpdate.Do(func() {
if wsc.singletonHandlerUpdate == nil {
wsc.singletonHandlerUpdate = NewHandler(wsc.eps.EndpointUpdate(), wsc.decoder, wsc.encoder)
}
})
if wsc.singletonHandlerUpdate == nil {
logV1.Fatal("web server config handler `Update` is nil")
return nil
}
return wsc.singletonHandlerUpdate
}
func NewWebServerConfigHandler(eps epv1.EndpointsFactory) WebServerConfigHandlers {
return &webServerConfigHandlers{
onceGetServerNames: sync.Once{},
onceGet: sync.Once{},
onceUpdate: sync.Once{},
eps: eps.WebServerConfig(),
decoder: decoder.NewWebServerConfigDecoder(),
encoder: encoder.NewWebServerConfigEncoder(),
}
}