/
chakra.go
46 lines (35 loc) · 996 Bytes
/
chakra.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
package adapter
import (
chakrapb "github.com/sakuraapp/protobuf/chakra"
"github.com/sakuraapp/supervisor/internal/config"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/resolver"
)
type ChakraAdapter struct {
chakrapb.ChakraServiceClient
conn *grpc.ClientConn
}
func (a *ChakraAdapter) Conn() *grpc.ClientConn {
return a.conn
}
func NewChakraAdapter(conf *config.Config) (*ChakraAdapter, error) {
creds, err := credentials.NewClientTLSFromFile(conf.ChakraKeyPath, "")
if err != nil {
return nil, err
}
resolver.SetDefaultScheme("dns")
opts := []grpc.DialOption{
grpc.WithTransportCredentials(creds),
grpc.WithDefaultServiceConfig(`{"loadBalancingConfig": [ { "round_robin": {} } ] }`), // use round-robin LB
}
conn, err := grpc.Dial(conf.ChakraAddr, opts...)
if err != nil {
return nil, err
}
client := chakrapb.NewChakraServiceClient(conn)
return &ChakraAdapter{
ChakraServiceClient: client,
conn: conn,
}, nil
}