You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

61 lines
1.5 KiB

package main
import (
"context"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/client/v3/naming/resolver"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"sonet/api/gen/auth"
"sonet/api/gen/mahjong"
"sonet/internal/mahjong/logic"
"sonet/internal/mahjong/store"
"sonet/pkg/config"
"sonet/pkg/grpc/discovery"
"sonet/pkg/protocol/deliver"
"sonet/pkg/utils/shutdown"
)
func main() {
conf := config.LoadConfig(nil, "cmd/mahjong")
// registry and run...
etcdClient, err := clientv3.New(conf.Etcd)
if err != nil {
panic(err)
}
registry := discovery.NewRegister(etcdClient)
shutdown.AddShutdownHook(registry.Stop)
// init deliver
// etcdResolver := discovery.NewResolver(etcdClient)
etcdResolver, err := resolver.NewBuilder(etcdClient)
if err != nil {
panic(err)
}
deli := deliver.NewDeliver(mahjong.Mahjong_ServiceDesc.ServiceName)
if err := deli.InitWithResolver(context.Background(), etcdResolver); err != nil {
panic(err)
}
mjStore := store.NewStore(deli)
// auth conn
url := discovery.EtcdDialUrl(auth.Auth_ServiceDesc.ServiceName)
authConn, err := grpc.DialContext(context.Background(), url,
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithResolvers(etcdResolver),
)
if err != nil {
panic(err)
}
mahjongServer := logic.NewMahjongServer(mjStore, deli, auth.NewAuthClient(authConn))
go func() {
err = mahjongServer.Run(conf.Grpc, etcdClient)
if err != nil {
panic(err)
}
}()
shutdown.Await()
}