Пример #1
0
        // ------------------------------------------------------------------------------------
        async void OnClk_Btn_Chg_RmLimit(object sender, EventArgs e)
        {
            try
            {
                string str_num     = m_TBox_num_RmLimit.Text;
                int    num_RmLimit = int.Parse(str_num);
                if (num_RmLimit < 2)
                {
                    num_RmLimit = 2;
                }
                else if (num_RmLimit > 15)
                {
                    num_RmLimit = 15;
                }

                Drrr_Host2.HttpTask chg_RmLimit_task = Drrr_Host2.Chg_RmLimit_Task_Factory.Create(num_RmLimit);
                await chg_RmLimit_task.DoWork();

                if (chg_RmLimit_task.m_str_cancel != null)
                {
                    MainForm.WriteStatus($"!!! 「Chg_RmLimit」がキャンセルされました。\r\n{chg_RmLimit_task.m_str_cancel}");
                    return;
                }

                MainForm.WriteStatus("+++ Chg_RmLimit 成功\r\n");
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus(ex.ToString() + "\r\n");
            }
        }
Пример #2
0
        async Task <bool> PostMsg(string msg_to_post)         // 戻り値は、「m_TBox_PostMsg.Clear()」のためだけに利用される
        {
            if (mb_postMsg)
            {
                return(false);
            }
            m_Btn_postMsg.Enabled = false;
            mb_postMsg            = true;

            try
            {
                Drrr_Host2.HttpTask postMsg_task = Drrr_Host2.PostMsg_Task_Factory.Create(msg_to_post);
                await postMsg_task.DoWork();

                mb_postMsg            = false;
                m_Btn_postMsg.Enabled = true;

                if (postMsg_task.m_str_cancel != null)
                {
                    MainForm.WriteStatus($"!!! 「PostMsg」がキャンセルされました。\r\n{postMsg_task.m_str_cancel}");
                    return(false);
                }

                MainForm.WriteStatus("+++ PostMsg 成功\r\n");
                return(true);
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus(ex.ToString() + "\r\n");
                mb_postMsg            = false;
                m_Btn_postMsg.Enabled = true;

                return(false);
            }
        }
Пример #3
0
        bool mb_getJSON = false;          // await Drrr_Host2.GetJSON() で、awaiter が溜まるのを防ぐ
        async void GetJSON(DateTime datetime)
        {
            if (mb_getJSON)
            {
                return;
            }
            m_Btn_connect.Enabled = false;
            mb_getJSON            = true;

            // --------------------------------------------------
            // JOSN の取得
            byte[] bytes_utf8;
            try
            {
                Drrr_Host2.HttpTask getJSON_task = Drrr_Host2.GetJSON_Task_Factory.Create();
                await getJSON_task.DoWork();

                mb_getJSON            = false;
                m_Btn_connect.Enabled = true;

                if (getJSON_task.m_str_cancel != null)
                {
                    MainForm.WriteStatus($"!!! 「JSON取得」がキャンセルされました。\r\n{getJSON_task.m_str_cancel}");
                    return;
                }

                bytes_utf8 = await getJSON_task.m_http_res.Content.ReadAsByteArrayAsync();
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus(ex.ToString() + "\r\n");
                mb_getJSON            = false;
                m_Btn_connect.Enabled = true;
                return;
            }

            // --------------------------------------------------
            // JOSN の解析
            try
            {
                StringBuilder sb = DB_cur.Anlz_RoomJSON(bytes_utf8);
                if (sb.Length > 0)
                {
                    MainForm.WriteMsg(sb.ToString());
                }

                Update_BanCtrls();

                // 新規入室者へのメッセージ処理
                if (UInfo_onRoom.msb_dtct_new_usr)
                {
                    UInfo_onRoom.msb_dtct_new_usr = false;

                    try
                    {
                        Drrr_Host2.HttpTask postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create(
                            "来室者用自動メッセージ:この部屋の趣旨は、以下の URL を参考にしてください。宜しくお願いします。");
                        await postmsg_task.DoWork();

                        if (postmsg_task.m_str_cancel != null)
                        {
                            throw new Exception(postmsg_task.m_str_cancel);
                        }

                        await Task.Delay(750);

                        postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create("https://github.com/kn201905/Ron_BAN");
                        await postmsg_task.DoWork();

                        if (postmsg_task.m_str_cancel != null)
                        {
                            throw new Exception(postmsg_task.m_str_cancel);
                        }
                    }
                    catch (Exception ex)
                    {
                        MainForm.WriteStatus($"!!! 来室者用メッセージの出力時にエラーが発生しました。\r\n{ex.ToString()}\r\n\r\n");
                    }
                }
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus($"!!! JSON解析中に例外が発生しました。JSON を保存します。\r\n{ex.ToString()}\r\n\r\n");

                File.WriteAllText(@"Z:err_" + datetime.ToString("HH_mm_ss_f") + ".json"
                                  , Encoding.UTF8.GetString(bytes_utf8));
            }
        }
Пример #4
0
            public async void OnClk_Btn_BAN()
            {
//				MainForm.WriteStatus($"OnClk_Btn_BAN(): m_id_this_session -> {m_id_this_session}\r\n");

                if (m_id_this_session == 0)
                {
                    MainForm.WriteStatus("!!! エラー検出: m_id_this_session == 0 in BanCtrl.OnClk_Btn_BAN()\r\n"); return;
                }
//				{ throw new Exception("!!! エラー検出: m_id_this_session == 0 in BanCtrl.OnClk_Btn_BAN()"); }

                // まず DB_static に encip を登録しておく
                DB_static.Regist(m_encip);

                mb_Rgst_ban = true;
                mb_Exec_Ban = true;

                m_GUI.m_Btn_AI_talk.Enabled = false;
                m_GUI.m_Btn_ban.Enabled     = false;

                if (m_id_this_session > 0)
                {
                    // 入室者の BAN 処理
                    m_GUI.m_TBox_info.BackColor = Color.HotPink;

                    Drrr_Host2.HttpTask ban_usr_task = Drrr_Host2.BanUsr_Task_Factory.Create(m_uinfo.m_uid.m_str_uid);
                    if (ban_usr_task.m_str_cancel == null)
                    {
                        try
                        {
                            await ban_usr_task.DoWork();
                        }
                        catch (Exception ex)
                        {
                            ban_usr_task.m_str_cancel = ex.ToString() + "\r\n";
                        }
                    }
                    // まとめてエラー処理を行う
                    if (ban_usr_task.m_str_cancel != null)
                    {
                        MainForm.WriteStatus($"!!! 「BanUsr」がキャンセルされました。\r\n{ban_usr_task.m_str_cancel}");
                        m_GUI.m_Btn_AI_talk.Enabled = true;
                        m_GUI.m_Btn_ban.Enabled     = true;
                        return;
                    }

                    // 受信メッセージを表示する
                    byte[] bytes_utf8 = await ban_usr_task.m_http_res.Content.ReadAsByteArrayAsync();

                    m_sb_ban_ret_msg.Clear();
                    m_sb_ban_ret_msg.Append(System.Text.Encoding.UTF8.GetString(bytes_utf8));
                    m_sb_ban_ret_msg.Append($"-> [{m_uinfo.m_uname}]\r\n");

                    // 強制退室 or 部屋にいませんでした の2択になるため、その判定が必要
                    string ret_str = m_sb_ban_ret_msg.ToString();
                    if (ret_str.Contains("強制退室") == false)
                    {
                        // 強制退室失敗
                        m_GUI.m_Btn_AI_talk.Enabled = true;
                        m_GUI.m_Btn_ban.Enabled     = true;
                    }

                    MainForm.WriteStatus(ret_str);
                }
                else
                {
                    // 退室者の BAN 処理
                    m_GUI.m_TBox_info.BackColor = Color.LightPink;

                    // 退室者の eip to ban 登録
                    ExitEip_onTalks.Regist_to_BAN(m_encip);
                }
            }