예제 #1
0
 void PING(object selectedItem)
 {
     if (lokpp)
     {
         return;
     }
     lokpp        = true;
     _ping        = new ViewModel.PING();
     _pingPREPARE = new PING_prepare(_ping);
     edit.ping    = "";
     if (edit.http == null)
     {
         return;
     }
     _pingPREPARE.Task_Completed += _pingPREPARE_Task_Completed;
     _pingPREPARE.asyncGET(edit.http);
 }
예제 #2
0
        string  ping_all(CancellationToken token, List <ParamCanal> myLIST)
        {
            if (loc.autoping)
            {
                return("");
            }
            loc.autoping = true;
            int ct_channel = 0;

            data.ping_all = myLIST.Count;
            //Trace.WriteLine("----Старт ...");
            if (Event_Print != null)
            {
                Event_Print("Старт ...");
            }
            foreach (var i in myLIST)
            {
                //Trace.WriteLine("p="+i.name.ToString()+"  size="+ myLIST.Count);
                if (token.IsCancellationRequested)
                {
                    break;
                }
                ;
                ct_channel++;
                data.ct_ping = ct_channel;
                if (Event_Print != null)
                {
                    Event_Print(" ping " + i.name.ToString());
                }
                //Trace.WriteLine(data.ct_ping.ToString() + " ping " + i.name.ToString());

                if (i.http == null || i.http == "")
                {
                    continue;
                }
                Regex regex0 = new Regex("------");
                var   match0 = regex0.Match(i.name);
                if (match0.Success)
                {
                    continue;
                }


                _ping.done = false;
                _pingPREPARE.Task_Completed += _pingPREPARE_Task_Completed;
                result_task = "";

                Regex regex1 = new Regex("http:");
                Regex regex2 = new Regex("https:");
                Regex regex3 = new Regex("udp:");
                Regex regex4 = new Regex("rtmp:");
                Regex regex5 = new Regex("mms:");


                var match1 = regex1.Match(i.http);
                var match2 = regex2.Match(i.http);
                var match3 = regex3.Match(i.http);
                var match4 = regex4.Match(i.http);
                var match5 = regex5.Match(i.http);


                if (match1.Success || match2.Success || match3.Success ||
                    match4.Success || match5.Success)
                {
                    int ct = 0;
                    _pingPREPARE.asyncGET(i.http);
                    while (result_task == "")
                    {
                        Thread.Sleep(200);
                        ct++;
                        data.ping_waiting = ct;
                        if (ct > 100)
                        {
                            result_task = "тайм аут"; break;
                        }
                        if (token.IsCancellationRequested)
                        {
                            break;
                        }
                        ;
                    }
                }
                else
                {
                    result_task = "НЕ ПОДДЕРЖИВАЕТСЯ";
                }

                var item = ViewModelMain.myLISTfull.Find(x => x.Compare() == i.Compare());

                data.ping_waiting = 0;
                if (item != null)
                {
                    if (_ping.result.Length < 2000)
                    {
                        string tmp = _ping.result.Replace('\r', ';');
                        tmp = tmp.Replace("#EXTM3U;", "");
                        tmp = tmp.Replace("#EXTM3U", "");

                        item.ping = tmp.Replace('\n', ';');

                        if (result_task == "НЕ ПОДДЕРЖИВАЕТСЯ" || result_task == "тайм аут")
                        {
                            item.ping = result_task;
                            if (Event_Print != null)
                            {
                                Event_Print(result_task + " " + i.name);
                            }
                        }
                    }
                    else
                    {
                        item.ping = "большой размер ответа " + _ping.result.Length.ToString();
                    }
                }
            }//for
            if (Event_Print != null)
            {
                Event_Print("end");
            }
            return("");
        }