package main import ( "context" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/naming/resolver" "sonet/api/gen/chat" "sonet/internal/chat/logic" "sonet/pkg/config" "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) } etcdResolver, err := resolver.NewBuilder(etcdClient) if err != nil { panic(err) } deli := deliver.NewDeliver(chat.Chat_ServiceDesc.ServiceName) if err := deli.InitWithResolver(context.Background(), etcdResolver); err != nil { panic(err) } chatServer := logic.NewChatServer(deli) go func() { err = chatServer.Run(conf.Grpc, etcdClient) if err != nil { panic(err) } }() shutdown.Await() }