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.
 
 

45 lines
889 B

package main
import (
"context"
clientv3 "go.etcd.io/etcd/client/v3"
"sonet/api/gen/chat"
"sonet/internal/chat/logic"
"sonet/pkg/config"
"sonet/pkg/grpc/discovery"
"sonet/pkg/protocol/deliver"
"sonet/pkg/utils/shutdown"
)
func main() {
conf := config.LoadConfig(nil, "cmd/chat")
// registry and run...
etcdClient, err := clientv3.New(conf.Etcd)
if err != nil {
panic(err)
}
shutdown.AddHook(func() {
if err := etcdClient.Close(); err != nil {
panic(err)
}
}, shutdown.WithOrderBack())
// etcd discovery
dis := discovery.NewEtcdDiscovery(etcdClient)
deli := deliver.NewDeliver(chat.Chat_ServiceDesc.ServiceName)
if err := deli.InitWithResolver(context.Background(), dis); err != nil {
panic(err)
}
chatServer := logic.NewChatServer(deli)
go func() {
err = chatServer.Run(conf.Grpc, dis)
if err != nil {
panic(err)
}
}()
shutdown.Await()
}