package com.bokecc.livemodule.live;

import com.bokecc.sdk.mobile.live.stream.LiveStreamPlayMode;
import com.bokecc.sdk.mobile.live.stream.RemoteStreamInfo;
import com.bokecc.sdk.mobile.live.stream.live.rtc.HDMediaView;

/**
 * 直播间连麦回调监听
 */
public interface DWLiveRTCListener {

    /**
     * 主播端接通连麦,开始
     * @param isVideoRtc 当前连麦是否是视频连麦
     */
    void onEnterSpeak(boolean isVideoRtc);

    /**
     * 连麦断开
     */
    void onDisconnectSpeak();

    /**
     * 连麦异常
     */
    void onSpeakError(String msg,int code);

    void onMessageShow(String msg);

    /**
     * 主播端接通连麦,开始
     * @param mIsVideoRtc  当前连麦是否是视频连麦
     * @param userId     用户id
     * @param role       用户角色
     */
    void onRemoteStreamEnable(boolean mIsVideoRtc, String userId, String role);


    /**
     * 拉流成功以后回调
     * @param hdMediaView
     */
    void onRemoteStreamAdded(HDMediaView hdMediaView, String userId, String role, RemoteStreamInfo info);

    /**
     * 流移除回调
     * @param userId 流id
     */
    void onRemoteStreamRemoved(String userId);

    /**
     * 讲师主动挂断
     */
    void onMasterBreak();

    void onRoomSettingChange(int code);

    /**
     * 使用此回调进行界面初始化
     * @param isAllowRtc
     * @param isVideoRtc
     */
    void onRTCModeChanged(boolean isAllowRtc,boolean isMultiRtc, boolean isVideoRtc);

    void onAudioStatusChange(String userId, boolean isAllowAudio, boolean isSelf,boolean isRemote);
    void onVideoStatusChange(String userId, boolean isAllowVideo, boolean isSelf,boolean isRemote);
    void onPlayModeChange(LiveStreamPlayMode.MODE mode);

    void onShowVideoLayout();

    void onHideVideoLayout();

    /**
     *
     * @param code -8 直播间连麦人数超限制
     */
    void onStartCallFail(int code);

    void onStartCallSuccess(HDMediaView hdMediaView);

    void onStartCall();

    void onReceiveCall();

    void onReceiveCancelCall();

    void onMasterRefuseCall();

    void onStreamError();
}
