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
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() |
|
}
|
|
|