// Code generated by protoc-gen-liverpc v0.1, DO NOT EDIT.
// source: v1/Bubble.proto

/*
Package v1 is a generated liverpc stub package.
This code was generated with go-common/app/tool/liverpc/protoc-gen-liverpc v0.1.

It is generated from these files:
	v1/Bubble.proto
	v1/Color.proto
	v1/DanmuConf.proto
	v1/GrayRule.proto
	v1/Remind.proto
	v1/Tag.proto
*/
package v1

import context "context"

import proto "github.com/golang/protobuf/proto"
import "go-common/library/net/rpc/liverpc"

var _ proto.Message // generate to suppress unused imports
// Imports only used by utility functions:

// ================
// Bubble Interface
// ================

type BubbleRPCClient interface {
	// * 获取用户当前气泡框
	// 获取用户当前气泡框
	GetCurrent(ctx context.Context, req *BubbleGetCurrentReq, opts ...liverpc.CallOption) (resp *BubbleGetCurrentResp, err error)

	// * 获取用户当前房间的气泡框
	// 获取用户当前房间的气泡框
	GetBubble(ctx context.Context, req *BubbleGetBubbleReq, opts ...liverpc.CallOption) (resp *BubbleGetBubbleResp, err error)

	// * 校验用户气泡框
	// 校验用户气泡框
	CheckAuth(ctx context.Context, req *BubbleCheckAuthReq, opts ...liverpc.CallOption) (resp *BubbleCheckAuthResp, err error)

	// * 给用户下发气泡框
	// 给用户下发气泡框
	MultiAdd(ctx context.Context, req *BubbleMultiAddReq, opts ...liverpc.CallOption) (resp *BubbleMultiAddResp, err error)
}

// ======================
// Bubble Live Rpc Client
// ======================

type bubbleRPCClient struct {
	client *liverpc.Client
}

// NewBubbleRPCClient creates a client that implements the BubbleRPCClient interface.
func NewBubbleRPCClient(client *liverpc.Client) BubbleRPCClient {
	return &bubbleRPCClient{
		client: client,
	}
}

func (c *bubbleRPCClient) GetCurrent(ctx context.Context, in *BubbleGetCurrentReq, opts ...liverpc.CallOption) (*BubbleGetCurrentResp, error) {
	out := new(BubbleGetCurrentResp)
	err := doRPCRequest(ctx, c.client, 1, "Bubble.getCurrent", in, out, opts)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bubbleRPCClient) GetBubble(ctx context.Context, in *BubbleGetBubbleReq, opts ...liverpc.CallOption) (*BubbleGetBubbleResp, error) {
	out := new(BubbleGetBubbleResp)
	err := doRPCRequest(ctx, c.client, 1, "Bubble.getBubble", in, out, opts)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bubbleRPCClient) CheckAuth(ctx context.Context, in *BubbleCheckAuthReq, opts ...liverpc.CallOption) (*BubbleCheckAuthResp, error) {
	out := new(BubbleCheckAuthResp)
	err := doRPCRequest(ctx, c.client, 1, "Bubble.checkAuth", in, out, opts)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *bubbleRPCClient) MultiAdd(ctx context.Context, in *BubbleMultiAddReq, opts ...liverpc.CallOption) (*BubbleMultiAddResp, error) {
	out := new(BubbleMultiAddResp)
	err := doRPCRequest(ctx, c.client, 1, "Bubble.multiAdd", in, out, opts)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// =====
// Utils
// =====

func doRPCRequest(ctx context.Context, client *liverpc.Client, version int, method string, in, out proto.Message, opts []liverpc.CallOption) (err error) {
	err = client.Call(ctx, version, method, in, out, opts...)
	return
}
