62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
|
package lancergateway
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
|
||
|
"go-common/library/net/rpc/warden/resolver"
|
||
|
"go-common/library/net/rpc/warden/balancer/wrr"
|
||
|
"go-common/library/naming/discovery"
|
||
|
xtime "go-common/library/time"
|
||
|
|
||
|
"google.golang.org/grpc"
|
||
|
)
|
||
|
|
||
|
type Config struct {
|
||
|
AppId string `toml:"appId"`
|
||
|
Timeout xtime.Duration `toml:"timeout"`
|
||
|
Subset int `toml:"subset"`
|
||
|
}
|
||
|
|
||
|
func (c *Config) ConfigValidate() (error) {
|
||
|
if c == nil {
|
||
|
return errors.New("config of LancerGateway can't be nil")
|
||
|
}
|
||
|
|
||
|
if c.AppId == "" {
|
||
|
c.AppId = "datacenter.lancer.gateway2-server"
|
||
|
}
|
||
|
|
||
|
if c.Timeout == 0 {
|
||
|
c.Timeout = xtime.Duration(time.Second * 5)
|
||
|
}
|
||
|
|
||
|
if c.Subset == 0 {
|
||
|
c.Subset = 5
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
resolver.Register(discovery.Builder())
|
||
|
}
|
||
|
|
||
|
// NewClient new member grpc client
|
||
|
func NewClient(c *Config) (Gateway2ServerClient, error) {
|
||
|
opts := []grpc.DialOption{
|
||
|
grpc.WithInsecure(),
|
||
|
grpc.WithBalancerName(wrr.Name),
|
||
|
}
|
||
|
|
||
|
if c.Timeout != 0 {
|
||
|
opts = append(opts, grpc.WithTimeout(time.Duration(c.Timeout)))
|
||
|
}
|
||
|
|
||
|
conn, err := grpc.Dial(fmt.Sprintf("discovery://default/%s?subset=%d", c.AppId, c.Subset), opts...)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return NewGateway2ServerClient(conn), nil
|
||
|
}
|