package cn.tee3.manager.bean;

/**
 * RxBus 广播实体类
 */
public class RxBusMsgObj {
    private MsgTag msgTag;  // 消息类型
    private Object msgBody; // 消息内容

    /**
     * 消息类型枚举
     */
    public enum MsgTag {
        Permission,                         // 动态权限请求完成消息
        Permission_Write_External_Storage,  // 写SD卡权限通过消息

        AVDEngine_onInitResult,             // 初始化引擎消息
        AVDEngine_onScheduleRoomResult,     // 创建房间消息
        AVDEngine_onCallOutGoingDevice,     // 创建房间消息
        AVDEngine_getRoom,                  // 创建房间消息

        Room_onJoinResult,                  // 加入房间消息
        Room_obtainFailure,                 // 获取房间失败消息
        Room_onLeaveIndication,             // 用户离会消息
        Room_onConnectionStatus,            // 网络重连消息
        Room_onOutgoingInviteStatusNotify,  // 呼叫sip房间消息

        AVDManager_initCallback,            // AVDSDK 初始化完成消息通知
        AVDManager_joinRoomComplete,        // AVDSDK 加入房间完成消息通知
        Meeting_onPublishCameraNotify,      // 发布视频消息
        Meeting_onPublishLocalCameraNotify, // 发布本地视频消息
        Meeting_onUnpublishCameraNotify,    // 取消发布视频消息
        Meeting_onSubscribeResult,          // 订阅视频消息
        Meeting_onUnsubscribeResult,        // 停止订阅视频消息
        Meeting_onPublishLocalResult,       // 发布本地视频结果返回消息
        Meeting_onUnpublishLocalResult,     // 取消发布本地视频结果返回消息
        Meeting_initComplete,               // 会议模块初始化完成消息
        Meeting_setupMeeting,               // 会议模块启动消息

        Meeting_usersIsAllLeaved,               // 会议模块启动消息

        Meeting_onUserJoinNotify,           // 用户加入房间通知
        Meeting_onUserLeaveNotify,          // 用户离开房间通知

        Meeting_onAudioLevelMonitorNotify,  // 打开麦克风回调
        Meeting_onOpenMicrophone,           // 打开麦克风回调
        Meeting_onCloseMicrophone,          // 关闭麦克风回调
        Meeting_onAudioLevelMonitor,        // 语音激励回调
        Meeting_onMicrophoneStatusNotify,   // 语音状态回调

        Meeting_onPublishScreenNotify,      // 发布屏幕共享通知
        Meeting_onUnpublishScreenNotify,    // 取消发布屏幕共享通知
        Meeting_onSubscribeScreenResult,    // 订阅屏幕共享通知
        Meeting_onUnsubscribeScreenResult,  // 取消订阅屏幕共享通知
    }

    public RxBusMsgObj(MsgTag msgTag) {
        this.msgTag = msgTag;
    }

    public RxBusMsgObj(MsgTag msgTag, Object msgBody) {
        this.msgTag = msgTag;
        this.msgBody = msgBody;
    }

    public MsgTag getMsgTag() {
        return msgTag;
    }

    public void setMsgTag(MsgTag msgTag) {
        this.msgTag = msgTag;
    }

    public Object getMsgBody() {
        return msgBody;
    }

    public void setMsgBody(Object msgBody) {
        this.msgBody = msgBody;
    }
}
