示例#1
0
        private void JoinMeetingCallback(IntPtr pData)
        {
            JoinMeetingResult joinMeetingResult =
                (JoinMeetingResult)Marshal.PtrToStructure(pData, typeof(JoinMeetingResult));

            ReturnMessage joinMeetingMessage;

            if (joinMeetingResult.m_result.m_rc == 0)
            {
                if (!string.IsNullOrEmpty(joinMeetingResult.m_meetingInfo.m_szTeacherPhoneId))
                {
                    MainSpeaker.Id = joinMeetingResult.m_meetingInfo.m_szTeacherPhoneId;
                }

                joinMeetingMessage = ReturnMessage.GenerateData(joinMeetingResult.m_meetingInfo.m_szTeacherPhoneId);
            }
            else
            {
                CurrentMeetingId = 0;
                switch (joinMeetingResult.m_result.m_rc)
                {
                case 13:
                    joinMeetingMessage = MessageManager.CameraNotSet;
                    break;

                case 14:
                    joinMeetingMessage = MessageManager.MicrophoneNotSet;
                    break;

                case 15:
                case -1009:
                    joinMeetingMessage = MessageManager.SpeakerNotSet;
                    break;

                default:
                    joinMeetingMessage = MessageManager.FailedToJoinMeeting;
                    break;
                }
            }

            SetResult("JoinMeeting", joinMeetingMessage);
        }
示例#2
0
        //command handlers
        private async Task JoinMeetingAsync()
        {
            GlobalData.Instance.ViewArea = new ViewArea()
            {
                Width  = _meetingView.ActualWidth,
                Height = _meetingView.ActualHeight
            };

            uint[] uint32SOfNonDataArray =
            {
                (uint)_meetingView.PictureBox1.Handle.ToInt32(),
                (uint)_meetingView.PictureBox2.Handle.ToInt32(),
                (uint)_meetingView.PictureBox3.Handle.ToInt32(),
                (uint)_meetingView.PictureBox4.Handle.ToInt32(),
            };

            foreach (var hwnd in uint32SOfNonDataArray)
            {
                Log.Logger.Debug($"【figure hwnd】:{hwnd}");
            }

            uint[] uint32SOfDataArray = { (uint)_meetingView.PictureBox5.Handle.ToInt32() };

            foreach (var hwnd in uint32SOfDataArray)
            {
                Log.Logger.Debug($"【data hwnd】:{hwnd}");
            }

            JoinMeetingResult joinMeetingResult =
                await
                _sdkService.JoinMeeting(MeetingId, uint32SOfNonDataArray, uint32SOfNonDataArray.Length,
                                        uint32SOfDataArray,
                                        uint32SOfDataArray.Length);

            //if failed to join meeting, needs to roll back
            if (joinMeetingResult.m_result.m_rc != 0)
            {
                Log.Logger.Error(
                    $"【join meeting result】:result={joinMeetingResult.m_result.m_rc}, msg={joinMeetingResult.m_result.m_message}");
                switch (joinMeetingResult.m_result.m_rc)
                {
                case 13:
                    joinMeetingResult.m_result.m_message = Messages.WarningNoCamera;
                    break;

                case 14:
                    joinMeetingResult.m_result.m_message = Messages.WarningNoMicrophone;
                    break;

                case 15:
                case -1009:
                    joinMeetingResult.m_result.m_message = Messages.WarningNoSpeaker;
                    break;

                case -915:
                    joinMeetingResult.m_result.m_message = Messages.WarningInvalidMeetingNo;
                    break;

                case -914:
                    joinMeetingResult.m_result.m_message = Messages.WarningMeetingHasBeenEnded;
                    break;
                }

                _startMeetingCallbackEvent(false, joinMeetingResult.m_result.m_message);
                _meetingView.Close();
            }
            else
            {
                //if join meeting successfully, then make main view invisible
                _startMeetingCallbackEvent(true, "");


                //if not speaker, then clear mode menu items
                if (!_sdkService.IsSpeaker)
                {
                    ModeMenuItems.Clear();
                    IsSpeaker = Visibility.Collapsed;
                }
                else
                {
                    IsSpeaker = Visibility.Visible;
                }

                if (_lessonDetail.Id > 0)
                {
                    ResponseResult result = await
                                            _bmsService.UpdateMeetingStatus(_lessonDetail.Id, _userInfo.UserId,
                                                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                                                            string.Empty);

                    HasErrorMsg(result.Status, result.Message);
                }
            }
        }