Esempio n. 1
0
 private static bool Make_Client_Event(Unit_Event_Type Type, string Data)
 {
     if (Tefreeca_client_event != null) //이벤트 구독자가 있어야만 발생..
     {
         Tefreeca_client_EventArgs TC_EvtArgs = new Tefreeca_client_EventArgs();
         TC_EvtArgs.type = Type;
         TC_EvtArgs.data_string = Data;
         Tefreeca_client_event(null, TC_EvtArgs);
         return true;
     }
     else
         return false;
 }
Esempio n. 2
0
 private static bool Make_Client_Event(Unit_Event_Type Type, int Data)
 {
     if (Tefreeca_client_event != null) //이벤트 구독자가 있어야만 발생..
     {
         Tefreeca_client_EventArgs TC_EvtArgs = new Tefreeca_client_EventArgs();
         TC_EvtArgs.type     = Type;
         TC_EvtArgs.data_int = Data;
         Tefreeca_client_event(null, TC_EvtArgs);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Esempio n. 3
0
        public void Eventer_Tefreeca_client_event(object sender, EventArgs e)
        {
            //try
            //{
            Tefreeca_client_EventArgs RecieveEventArg = e as Tefreeca_client_EventArgs;

            if (RecieveEventArg == null)
            {
                return;
            }
            Unit_Event_Type type = RecieveEventArg.type;

            switch (type)
            {
            case Unit_Event_Type.List_Account:
            {
                List <i_List_Account> DR = (List <i_List_Account>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>       L  = new List <string[]>();

                foreach (i_List_Account R in DR)
                {
                    L.Add(new String[] {
                            R.No.ToString(),
                            R.Type_order_Site.ToString(),
                            R.User_No.ToString(),
                            R.ID.ToString(),
                            R.PW.ToString(),
                            R.State.ToString()
                        });
                }
                UI.set_Autolistview_delegate(listView_Account, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_Connect:
            {
                List <i_List_Connect> DR = (List <i_List_Connect>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>       L  = new List <string[]>();

                foreach (i_List_Connect R in DR)
                {
                    L.Add(new String[] {
                            R.No.ToString(),
                            R.Order_No.ToString(),
                            R.Unit_No.ToString(),
                            R.Connect_URL.Replace("http://play.afreecatv.com/", "").ToString(),
                            R.Proxy_host.ToString(),
                            R.Type_order.ToString(),
                            R.State.ToString(),
                            R.Login_Account_no == -1 ? "" : R.Login_Account_no.ToString(),
                            R.State_Account_on_connected.ToString(),
                            R.Wait_count.ToString()
                        });
                }
                UI.set_Autolistview_delegate(listView_Connection, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_Order:
            {
                List <i_List_Order> DR = (List <i_List_Order>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>     L  = new List <string[]>();

                foreach (i_List_Order R in DR)
                {
                    L.Add(
                        new String[] {
                            R.No.ToString(),
                            R.User_No.ToString(),
                            R.Connected_count.ToString(),
                            R.Max_connect.ToString(),
                            R.State.ToString(),
                            R.URL.ToString(),
                            R.Type_order.ToString(),
                        });
                }
                UI.set_Autolistview_delegate(listView_Order, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_Proxy:
            {
                List <i_List_Proxy> DR = (List <i_List_Proxy>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>     L  = new List <string[]>();

                foreach (i_List_Proxy R in DR)
                {
                    L.Add(
                        new String[] {
                            R.No.ToString(),
                            R.Host.ToString(),
                            R.Error_count.ToString(),
                            R.State.ToString(),
                            R.Type.ToString(),
                        });
                }
                UI.set_Autolistview_delegate(listView_ProxyOnServer, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_Unit:
            {
                List <i_List_Unit> DR = (List <i_List_Unit>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>    L  = new List <string[]>();

                foreach (i_List_Unit R in DR)
                {
                    L.Add(
                        new String[] {
                            R.No.ToString(),
                            R.Connected_count.ToString(),
                            R.Max_connect.ToString(),
                            R.Proxy.ToString(),
                            R.State.ToString(),
                            R.Wait_count.ToString()
                        });
                }
                UI.set_Autolistview_delegate(listView_Unit, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_User:
            {
                List <i_List_User> DR = (List <i_List_User>)(RecieveEventArg.Data_object_list[0]);
                List <string[]>    L  = new List <string[]>();
                foreach (i_List_User R in DR)
                {
                    L.Add(
                        new String[] {
                            R.No.ToString(),
                            R.Unit_No.ToString(),
                            R.id.ToString(),
                            R.Slot.ToString(),
                            R.Slot_Account.ToString(),
                            R.pay_type.ToString(),
                            R.expire.ToString(),
                            R.User_type.ToString(),
                            R.is_Reseller.ToString(),
                            R.my_Reseller_No.ToString()
                        });
                }
                UI.set_Autolistview_delegate(listView_LoginUser, L, Option_Audo_listview.Auto_display);
            }
            break;

            case Unit_Event_Type.List_ServerInfo:
            {
                i_List_ServerInfo DR = (i_List_ServerInfo)(RecieveEventArg.Data_object_list[0]);

                set_label_delegate(lb_mqc, DR.Command_Q_length.ToString());
            }
            break;

            default:
            { }
            break;
            }
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine("Error : {0}", ex.ToString());
            //    throw;
            //}
        }
Esempio n. 4
0
        public void Eventer_Tefreeca_client_event(object sender, EventArgs e)
        {
            try
            {
                Tefreeca_client_EventArgs RecieveEventArg = e as Tefreeca_client_EventArgs;
                if (RecieveEventArg == null)
                {
                    return;
                }
                Unit_Event_Type type = RecieveEventArg.type;

                switch (type)
                {
                case Unit_Event_Type.Change_connect:     //연결 상태가 변하면,
                {
                    bool connected = (bool)RecieveEventArg.Data_object_list[0];
                    UI.set_button_delegate(btn_Login, connected, Option_button.enable);
                    if (connected)
                    {
                        UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.로그인_준비_완료.ToString().Replace("_", " ") }, Option_listBox.add);
                        if (Data_structure.is_debug)
                        {
                            UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.디버깅_모드.ToString().Replace("_", " ") }, Option_listBox.add);
                        }
                    }
                }
                break;

                case Unit_Event_Type.Login_success:
                {
                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.로그인_성공.ToString().Replace("_", " ") }, Option_listBox.add);

                    //판낼 정보를 업데이트가 먼저 되어야 한다.


                    UI.set_PanelVisible_delegate(panel_login, false);
                    UI.set_button_delegate(btn_Login, true, Option_button.enable);
                }
                break;

                case Unit_Event_Type.Login_Failure:    // 로그인 실패시
                {
                    //Login_Failure
                    string s = "";
                    i_Login_Failure_type Failure_info = (i_Login_Failure_type)RecieveEventArg.Data_object_list[0];
                    if (Failure_info == i_Login_Failure_type.Duplicate_Login)
                    {
                        s = "중복로그인 불가.";
                    }
                    else if (Failure_info == i_Login_Failure_type.Invalid_login_information)
                    {
                        s = "잘못된 로그인 정보";
                    }

                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.로그인_실패.ToString().Replace("_", " ") + " : " + s }, Option_listBox.add);
                    UI.set_button_delegate(btn_Login, true, Option_button.enable);
                }
                break;

                case Unit_Event_Type.User_info:
                {
                    i_User_info User_info = (i_User_info)RecieveEventArg.Data_object_list[0];
                    TimeSpan    remind    = User_info.Expire - DateTime.Now;

                    Max_Connect = User_info.slot;                                                                  //최대 연결 가능 슬롯을 세팅해준다.
                    UI.NumericUpDowndelegate(numericUpDown_MaxConnect, Max_Connect, Option_NumericUpDown.Maximum); //최대치로 세팅
                    UI.NumericUpDowndelegate(numericUpDown_MaxConnect, Max_Connect, Option_NumericUpDown.value);   //최대치로 세팅
                    UI.TrackBardelegate(trackBar_order_maxconnect, 50, Option_TrackBar.value);                     //맥시멈으로..
                    Set_MaxConnect = Max_Connect;
                    UI.set_label_delegate(lb_userName, User_info.Id + "님");
                    UI.set_label_delegate(lb_expire, "expire : " + User_info.Expire.ToShortDateString() + " (" + ((int)remind.TotalDays).ToString() + " days remained.)");
                    UI.set_label_delegate(lb_usergrade, User_info.type.ToString() + " 등급");
                }
                break;

                case Unit_Event_Type.Order_no:
                {
                    //int order_no = RecieveEventArg.data_int;
                    UI.set_button_delegate(btn_connect, "해제", Option_button.text);
                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "접속 명령 생성." }, Option_listBox.add);
                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.접속_명령_생성.ToString().Replace("_", " ") }, Option_listBox.add);
                }
                break;

                case Unit_Event_Type.Error_Order:
                {
                    client_message error_info = (client_message)RecieveEventArg.Data_object_list[0];
                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.오류.ToString().Replace("_", " ") + " : " + error_info.ToString().Replace("_", " ") }, Option_listBox.add);
                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "[오류] : " + error_info }, Option_listBox.add);
                    UI.set_TextBox_delegate(tbx_BJID, true, Option_TextBox.enable);
                    UI.set_button_delegate(btn_connect, "접속", Option_button.text);
                    UI.set_button_delegate(btn_connect, true, Option_button.enable);
                }
                break;

                case Unit_Event_Type.Active_Order:     //주문이 활성화 되면 이것을 취소할 수 있게 해준다.
                {
                    //int order_no = RecieveEventArg.data_int;
                    mode = btn_mode.disconnect;
                    UI.set_button_delegate(btn_connect, true, Option_button.enable);
                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.활성화_되었습니다.ToString().Replace("_", " ") }, Option_listBox.add);
                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "활성화 되었습니다." }, Option_listBox.add);
                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "[" + order_no.ToString() + "]활성화." }, Option_listBox.add);
                }
                break;

                case Unit_Event_Type.Order_Info:
                {
                    i_Order_Info Order_info = (i_Order_Info)RecieveEventArg.Data_object_list[0];

                    string State = Order_info.State.ToString().Replace("_", " ");

                    UI.set_label_delegate(lb_connect_state, State);

                    /*
                     * if (Order_info.State == State_Order.Close || Order_info.State == State_Order.Closing) //클로징, 클로즈땐 카운트 표시 안함.
                     *  UI.set_label_delegate(lb_connect_state, State);
                     * else
                     *  UI.set_label_delegate(lb_connect_state, State + " (" + Order_info.Connect_Count + ")");
                     */
                    if (Old_State == State_Order.Active && Order_info.State == State_Order.Closing)         //활성화 되었다가 클로징으로 바뀌면.
                    {
                        //UI.set_listBox_delegate(listBox_state_log, new string[] { "연결 해제중.." }, Option_listBox.add);
                        UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.연결_해제중.ToString().Replace("_", " ") }, Option_listBox.add);
                        UI.set_TextBox_delegate(tbx_BJID, true, Option_TextBox.enable);
                    }

                    if (Order_info.State == State_Order.Close)         //활성화 되었다가 클로징으로 바뀌면.
                    {
                        mode = btn_mode.connect;
                        UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.연결_해제_성공.ToString().Replace("_", " ") }, Option_listBox.add);
                        //UI.set_listBox_delegate(listBox_state_log, new string[] { "연결 해제 성공." }, Option_listBox.add);
                        UI.set_TextBox_delegate(tbx_BJID, true, Option_TextBox.enable);
                        UI.set_button_delegate(btn_connect, "접속", Option_button.text);
                        UI.set_button_delegate(btn_connect, true, Option_button.enable);
                    }
                    Old_State = Order_info.State;
                }
                break;

                case Unit_Event_Type.Server_Connection_Broken:     //서버와 연결이 끊김.
                {
                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "서버와의 접속이 끊어졌습니다." }, Option_listBox.add);
                    UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.서버와_접속이_끊어졌습니다.ToString().Replace("_", " ") }, Option_listBox.add);
                }
                break;

                case Unit_Event_Type.Order_Set_MaxConnect:     //최대 연결 수가 변경 수락되면..
                {
                    i_R_Order_Set_MaxConnect ir = (i_R_Order_Set_MaxConnect)RecieveEventArg.Data_object_list[0];

                    if (ir.message == client_message.방송_접속수가_변경되었습니다)
                    {
                        UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.방송_접속수가_변경되었습니다.ToString().Replace("_", " ") + "[" + ir.Max_Connect + "]" }, Option_listBox.add);

                        Set_MaxConnect = ir.Max_Connect;

                        if (int.Parse(numericUpDown_MaxConnect.Value.ToString()) == Set_MaxConnect)
                        {
                            UI.set_button_delegate(btn_set_Maxconnect, false, Option_button.enable);
                        }
                        else
                        {
                            UI.set_button_delegate(btn_set_Maxconnect, true, Option_button.enable);
                        }
                    }
                    else if (ir.message == client_message.방송_접속수_변경중_오류)
                    {
                        UI.set_listBox_delegate(listBox_state_log, new string[] { client_message.방송_접속수_변경중_오류.ToString().Replace("_", " ") }, Option_listBox.add);
                    }
                    if (int.Parse(numericUpDown_MaxConnect.Value.ToString()) == Set_MaxConnect)
                    {
                        UI.set_button_delegate(btn_set_Maxconnect, false, Option_button.enable);
                    }
                    else
                    {
                        UI.set_button_delegate(btn_set_Maxconnect, true, Option_button.enable);
                    }

                    //UI.set_listBox_delegate(listBox_state_log, new string[] { "서버와의 접속이 끊어졌습니다." }, Option_listBox.add);
                }
                break;

                default:
                { }
                break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : {0}", ex.ToString());
                throw;
            }
        }
Esempio n. 5
0
        public static void Eventer_Tefreeca_client_event(object sender, EventArgs e)
        {
            try
            {
                Tefreeca_client_EventArgs RecieveEventArg = e as Tefreeca_client_EventArgs;
                if (RecieveEventArg == null)
                {
                    return;
                }
                Unit_Event_Type type = RecieveEventArg.type;

                switch (type)
                {
                case Unit_Event_Type.Account_Check_Login:
                {
                    int connect_no = RecieveEventArg.data_int;

                    //실질적인 로그인 시도.
                    if (!Ldriver.Has_int_key(connect_no))         //드라이브가 없으면 바로 삭제한것으로 간주
                    {
                        return;
                    }
                    IWebDriver drv = (IWebDriver)Ldriver.Select_key(connect_no);

                    if (login_check(drv))
                    {
                        i_Updated_Connection_Account iua = new i_Updated_Connection_Account();
                        iua.Connect_No = connect_no;
                        iua.State      = State_Account_on_connected.Logged_Account;
                        TefreecaUnit_interface.Add_Command(Command_Client.Updated_Connection_Account, iua);
                    }
                    else         //로긴 상태가 아니라면, 로긴을 해야하는데.. 그래서 다시 setting 로 바꿔서 로긴시도하게끔 만듬.
                    {
                        i_Updated_Connection_Account iua = new i_Updated_Connection_Account();
                        iua.Connect_No = connect_no;
                        iua.State      = State_Account_on_connected.Setting;
                        TefreecaUnit_interface.Add_Command(Command_Client.Updated_Connection_Account, iua);
                    }
                }
                break;

                case Unit_Event_Type.Account_Login:     //ㄹ
                {
                    i_Account_Set iac = (i_Account_Set)RecieveEventArg.Data_object_list[0];

                    //실질적인 로그인 시도.
                    if (!Ldriver.Has_int_key(iac.Connect_No))         //드라이브가 없으면 바로 삭제한것으로 간주
                    {
                        return;
                    }
                    IWebDriver drv = (IWebDriver)Ldriver.Select_key(iac.Connect_No);

                    login_afreeca(drv, iac.ID, iac.PW);         //여기선 로긴만 한다.
                }
                break;

                case Unit_Event_Type.Check_End_broadcast:     //방송이 진행중에 종료되었는지 확인하는 코드
                {
                    foreach (i_connect C in RecieveEventArg.Data_object_list)
                    {
                        Thread th = new Thread(new ParameterizedThreadStart(Thread_check_End_Broadcasting));
                        th.Start(C);         //웹브라우저 객체를 매게변수로 넘긴다.
                    }
                }
                break;

                case Unit_Event_Type.Disconnect_All:
                {
                    Shutdown_ALL();
                }
                break;

                case Unit_Event_Type.Disconnect_connect:    //하나의 연결 해제.
                {
                    i_connect C = (i_connect)RecieveEventArg.Data_object_list[0];

                    if (!Ldriver.Has_int_key(C.No))         //드라이브가 없으면 바로 삭제한것으로 간주
                    {
                        TefreecaUnit_interface.Add_Command( //상태를 업데이트 하도록 한다.
                            Command_Client.Updated_Connection,
                            new i_Updated_Connection(C.No, i_Updated_Connection_Type.State_Connect, State_Connect.Close));
                        return;
                    }

                    TefreecaUnit_interface.Add_Command(         //상태를 업데이트 하도록 한다.
                        Command_Client.Updated_Connection,
                        new i_Updated_Connection(C.No, i_Updated_Connection_Type.State_Connect, State_Connect.Closing));

                    Thread th = new Thread(new ParameterizedThreadStart(Close_Driver));
                    th.Start(Ldriver.Select_key(C.No));         //웹브라우저 객체를 매게변수로 넘긴다.

                    th.Join();

                    TefreecaUnit_interface.Add_Command(         //상태를 업데이트 하도록 한다.
                        Command_Client.Updated_Connection,
                        new i_Updated_Connection(C.No, i_Updated_Connection_Type.State_Connect, State_Connect.Close));
                    try
                    {
                        Ldriver.Remove(C.No);
                    }
                    catch
                    {
                        Console.WriteLine("Already remove webdriver : {0}", C.No);
                    }
                }
                break;

                case Unit_Event_Type.Order_Connect:
                {
                    i_connect C = JsonConvert.DeserializeObject <i_connect>(RecieveEventArg.data_string);
                    Command_Connect(C);
                }
                break;

                case Unit_Event_Type.Order_Disconnect:
                {
                }
                break;

                case Unit_Event_Type.Connect_sideBreak:
                {
                    SideBreak_ConnectNo = RecieveEventArg.data_int;
                }
                break;

                default:
                { }
                break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : {0}", ex.ToString());
                //throw;
            }
        }