95 lines
3.9 KiB
Go
95 lines
3.9 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc"
|
|
roomv1 "hyapp/api/proto/room/v1"
|
|
)
|
|
|
|
// RoomClient 抽象 gateway 对 room-service 的 gRPC 编排依赖。
|
|
type RoomClient interface {
|
|
CreateRoom(ctx context.Context, req *roomv1.CreateRoomRequest) (*roomv1.CreateRoomResponse, error)
|
|
JoinRoom(ctx context.Context, req *roomv1.JoinRoomRequest) (*roomv1.JoinRoomResponse, error)
|
|
LeaveRoom(ctx context.Context, req *roomv1.LeaveRoomRequest) (*roomv1.LeaveRoomResponse, error)
|
|
MicUp(ctx context.Context, req *roomv1.MicUpRequest) (*roomv1.MicUpResponse, error)
|
|
MicDown(ctx context.Context, req *roomv1.MicDownRequest) (*roomv1.MicDownResponse, error)
|
|
ChangeMicSeat(ctx context.Context, req *roomv1.ChangeMicSeatRequest) (*roomv1.ChangeMicSeatResponse, error)
|
|
MuteUser(ctx context.Context, req *roomv1.MuteUserRequest) (*roomv1.MuteUserResponse, error)
|
|
KickUser(ctx context.Context, req *roomv1.KickUserRequest) (*roomv1.KickUserResponse, error)
|
|
SendGift(ctx context.Context, req *roomv1.SendGiftRequest) (*roomv1.SendGiftResponse, error)
|
|
}
|
|
|
|
// RoomGuardClient 抽象 gateway 对 room-service 实时守卫 RPC 的依赖。
|
|
// 腾讯云 IM 回调只做字段解析和鉴权,房间 presence、禁言和踢人判断必须回查 room-service。
|
|
type RoomGuardClient interface {
|
|
CheckSpeakPermission(ctx context.Context, req *roomv1.CheckSpeakPermissionRequest) (*roomv1.CheckSpeakPermissionResponse, error)
|
|
VerifyRoomPresence(ctx context.Context, req *roomv1.VerifyRoomPresenceRequest) (*roomv1.VerifyRoomPresenceResponse, error)
|
|
}
|
|
|
|
type grpcRoomClient struct {
|
|
client roomv1.RoomCommandServiceClient
|
|
}
|
|
|
|
type grpcRoomGuardClient struct {
|
|
client roomv1.RoomGuardServiceClient
|
|
}
|
|
|
|
// NewGRPCRoomClient 用 gRPC 连接构造 room-service client。
|
|
func NewGRPCRoomClient(conn *grpc.ClientConn) RoomClient {
|
|
return &grpcRoomClient{
|
|
client: roomv1.NewRoomCommandServiceClient(conn),
|
|
}
|
|
}
|
|
|
|
// NewGRPCRoomGuardClient 用同一条 room-service gRPC 连接构造守卫 client。
|
|
func NewGRPCRoomGuardClient(conn *grpc.ClientConn) RoomGuardClient {
|
|
return &grpcRoomGuardClient{
|
|
client: roomv1.NewRoomGuardServiceClient(conn),
|
|
}
|
|
}
|
|
|
|
func (c *grpcRoomClient) CreateRoom(ctx context.Context, req *roomv1.CreateRoomRequest) (*roomv1.CreateRoomResponse, error) {
|
|
return c.client.CreateRoom(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) JoinRoom(ctx context.Context, req *roomv1.JoinRoomRequest) (*roomv1.JoinRoomResponse, error) {
|
|
return c.client.JoinRoom(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) LeaveRoom(ctx context.Context, req *roomv1.LeaveRoomRequest) (*roomv1.LeaveRoomResponse, error) {
|
|
return c.client.LeaveRoom(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) MicUp(ctx context.Context, req *roomv1.MicUpRequest) (*roomv1.MicUpResponse, error) {
|
|
return c.client.MicUp(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) MicDown(ctx context.Context, req *roomv1.MicDownRequest) (*roomv1.MicDownResponse, error) {
|
|
return c.client.MicDown(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) ChangeMicSeat(ctx context.Context, req *roomv1.ChangeMicSeatRequest) (*roomv1.ChangeMicSeatResponse, error) {
|
|
return c.client.ChangeMicSeat(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) MuteUser(ctx context.Context, req *roomv1.MuteUserRequest) (*roomv1.MuteUserResponse, error) {
|
|
return c.client.MuteUser(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) KickUser(ctx context.Context, req *roomv1.KickUserRequest) (*roomv1.KickUserResponse, error) {
|
|
return c.client.KickUser(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomClient) SendGift(ctx context.Context, req *roomv1.SendGiftRequest) (*roomv1.SendGiftResponse, error) {
|
|
return c.client.SendGift(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomGuardClient) CheckSpeakPermission(ctx context.Context, req *roomv1.CheckSpeakPermissionRequest) (*roomv1.CheckSpeakPermissionResponse, error) {
|
|
return c.client.CheckSpeakPermission(ctx, req)
|
|
}
|
|
|
|
func (c *grpcRoomGuardClient) VerifyRoomPresence(ctx context.Context, req *roomv1.VerifyRoomPresenceRequest) (*roomv1.VerifyRoomPresenceResponse, error) {
|
|
return c.client.VerifyRoomPresence(ctx, req)
|
|
}
|