package grpcclient import ( "fmt" "git.hlsq.asia/alex/proto/proto/rs/rspb" "git.hlsq.asia/alex/service-common/discover" "git.hlsq.asia/alex/service-common/discover/common" "git.hlsq.asia/alex/service-common/net/grpc/resolver" "google.golang.org/grpc" ) // SceneNewClient 根据SID查找场景服,一般不用这个函数 func SceneNewClient(sid ...int64) (rspb.SceneClient, error) { var c *grpc.ClientConn var err error if len(sid) == 0 { c, err = resolver.GetGrpcClientConn("etcd:///" + common.KeyDiscoverServiceNameScene) } else { c, err = discover.FindServer(common.KeyDiscoverScene, sid...) } if err != nil { return nil, err } return rspb.NewSceneClient(c), nil } // SceneInstanceNewClient 根据副本唯一编号查找场景服 func SceneInstanceNewClient(uniqueNO int64) (rspb.SceneClient, error) { sid := discover.FindInstanceByUniqueNo(uniqueNO) if sid == 0 { return nil, fmt.Errorf("instance not found: %v", uniqueNO) } return SceneNewClient(sid) } func SceneNewBroadcastClient() map[int64]rspb.SceneClient { clientM := make(map[int64]rspb.SceneClient) connM := discover.FindServerAll(common.KeyDiscoverScene) for sid, conn := range connM { clientM[sid] = rspb.NewSceneClient(conn) } return clientM }