static AvPlayer()
 {
     state         = AvChatStateE.Idle;
     ChatType      = AvChatTypeE.Audio;
     initiatedChat = false;
     ringer        = new Ringer();
     ringer.Initialize();
 }
        public static void AcceptAvRequest(int fromUserID, string fromUserName, AvChatTypeE type, ChatTypeE clientWindow)
        {
            Kv kv = new Kv();

            kv.Set("MethodName", (int)MethodNameE.AvChat);
            kv.Set("AvChat", (int)AvChatE.Accepted);
            kv.Set("AvChatType", (int)type);
            kv.Set("FromUserID", fromUserID);
            kv.Set("FromUserName", fromUserName);
            kv.Set("ToUserID", Ap.CurrentUserID);
            kv.Set("ToUserName", Ap.CurrentUser.UserName);
            kv.Set("ClientWindow", (int)clientWindow);
            SocketClient.Instance.InvokeAsync(kv.DataTable);
        }
        public static void InitializeChat(int toUserId, String toUserName, AvChatTypeE chatType, ChatTypeE clientWindow)
        {
            state         = AvChatStateE.Handshaking;
            ChatType      = chatType;
            initiatedChat = true;
            ToUserId      = toUserId;
            ToUserName    = toUserName;
            ClientWindow  = clientWindow;

            if (avPlayer != null)
            {
                avPlayer.Dispose();
                avPlayer = null;
            }

            StringBuilder connectionString = new StringBuilder("rtmp://");

            connectionString.Append(Config.AvServerIp);
            connectionString.Append(":");
            connectionString.Append(Config.AvServerPort);
            connectionString.Append("/videochat");

            try
            {
                string chatTypeString = ((int)ChatType + 1).ToString();
                avPlayer = new AvPlayer();
                avPlayer.player.CallFunction("<invoke name=\"InitializeChat\" returntype=\"xml\"><arguments><string>" + connectionString.ToString() + "</string><string>" + Ap.CurrentUserID.ToString() + "</string><string>" + toUserId.ToString() + "</string><number>" + chatTypeString + "</number></arguments></invoke>");
                //ringer.StartRinging();
                if (OnAvChatInitialize != null)
                {
                    OnAvChatInitialize.Invoke(typeof(AvPlayer), new AvChatEventArgs(ChatType));
                }
            }
            catch (AccessViolationException ex)
            {
                StopChat();
                MessageForm.Show(null, MsgE.ErrorAvNoCamera, MessageBoxButtons.OK, MessageBoxIcon.Error, ex);
            }
            catch (COMException e)
            {
                if (e.Message.Substring(0, 20) == "Class not registered")
                {
                    MessageForm.Show(null, MsgE.ErrorAvNoPlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        public static void StartChat(DataTable dt)
        {
            Kv          kv = new Kv(dt);
            string      chatType;
            int         fromUserId   = kv.GetInt32("FromUserID");
            int         toUserId     = kv.GetInt32("ToUserID");
            string      fromUserName = kv.Get("FromUserName");
            AvChatTypeE chatTypeE    = (AvChatTypeE)kv.GetInt32("AvChatType");

            if (chatTypeE == AvChatTypeE.Audio)
            {
                chatType = "audio";
            }
            else
            {
                chatType = "video";
            }

            if (MessageForm.Confirm(ActiveForm, MsgE.InfoAvChatRequested, chatType, fromUserName) == DialogResult.No)
            {
                kv.Set("AvChat", (int)AvChatE.Declined);
                SocketClient.SendAvResponse(kv);
                return;
            }

            state         = AvChatStateE.Talking;
            initiatedChat = false;
            ChatType      = chatTypeE;
            FromUserId    = fromUserId;
            FromUserName  = fromUserName;
            ToUserId      = toUserId;

            if (avPlayer != null)
            {
                avPlayer.Dispose();
                avPlayer = null;
            }

            StringBuilder connectionString = new StringBuilder("rtmp://");

            connectionString.Append(Config.AvServerIp);
            connectionString.Append(":");
            connectionString.Append(Config.AvServerPort);
            connectionString.Append("/videochat");

            try
            {
                avPlayer = new AvPlayer();
                if (ChatType == AvChatTypeE.Video)
                {
                    ShowPlayer();
                }

                string chatTypeString = ((int)ChatType + 1).ToString();
                avPlayer.player.CallFunction("<invoke name=\"StartChat\" returntype=\"xml\"><arguments><string>" + connectionString.ToString() + "</string><string>" + FromUserId + "</string><string>" + ToUserId + "</string><number>" + chatTypeString + "</number></arguments></invoke>");

                if (OnAvChatBegan != null)
                {
                    OnAvChatBegan.Invoke(typeof(AvPlayer), new AvChatEventArgs(ChatType));
                }
            }

            catch (AccessViolationException ex)
            {
                TestDebugger.Instance.WriteError(ex);
                StopChat();
                MessageForm.Show(null, MsgE.ErrorAvNoCamera, MessageBoxButtons.OK, MessageBoxIcon.Error, ex);
            }
            catch (COMException e)
            {
                TestDebugger.Instance.WriteError(e);
                if (e.Message.Substring(0, 20) == "Class not registered")
                {
                    MessageForm.Show(null, MsgE.ErrorAvNoPlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Exemple #5
0
 public AvChatEventArgs(AvChatTypeE chatType)
 {
     ChatType = chatType;
 }