Esempio n. 1
0
        public static string ToXmlContent(this ConnectionStatusInfo source)
        {
            var sb = new StringBuilder();

            sb.AppendHeader();
            sb.AppendValue("New" + nameof(source.ConnectionStatus), source.ConnectionStatus);
            sb.AppendValue("New" + nameof(source.LastConnectionError), source.LastConnectionError);
            sb.AppendValue("New" + nameof(source.Uptime), source.Uptime);
            sb.AppendFooter();
            return(sb.ToString());
        }
Esempio n. 2
0
        // Metodi, jota kutsutaan kun yhteyden tila muuttuu. Lopuksi nostetaan event, jolla ilmoitetaan tässä tapauksessa yhteyden tilan muuttumisesta toimintalogiikalle
        private void YhteydenTilaMuuttui(object source, ConnectionStatusEventArgs args)
        {
            ConnectionStatusInfo muuttunutYhteydenTila = args.StatusInfo;

            yhteydenTila = muuttunutYhteydenTila.FullStatusString;
            if (yhteydenTila == null)
            {
                yhteydenTila = "Unknown";
            }
            // Jos yhteys katkeaa tai simulaattori suljetaan ohjelman ollessa käynnissä, poistetaan asiakas-client ja muutetaan initKutsuttu alkuarvoonsa
            if (yhteydenTila == "ConnectionErrorClientReconnect")
            {
                asiakas.Dispose();
                initKutsuttu = false;
            }
            YhteysMuuttui(yhteydenTila);
        }
Esempio n. 3
0
        public async Task GetStatusInfoAsync_Test1()
        {
            var expected = new ConnectionStatusInfo
            {
                ConnectionStatus    = ConnectionStatus.Connected,
                LastConnectionError = ConnectionError.ERROR_NONE,
                Uptime = 1000,
            };
            var handler = new FakeHandler();

            handler.Sending += (s, e) => { e.Response.Content = new StringContent(expected.ToXmlContent()); };

            var clt    = new WANPPPConnectionClient("https://fritz.box", 5000, handler);
            var actual = await clt.GetStatusInfoAsync();

            Assert.Equal(expected.ConnectionStatus, actual.ConnectionStatus);
            Assert.Equal(expected.LastConnectionError, actual.LastConnectionError);
            Assert.Equal(expected.Uptime, actual.Uptime);
        }
Esempio n. 4
0
        public static void ChackConnection()
        {
            try
            {
                while (true)
                {
                    for (int i = 0; i < Gongyong.roomlist.Count; i++)//循环发送牌桌内用户是否离线等消息
                    {
                        var roomInfo = Gongyong.roomlist[i];
                        var mjUsers  = Gongyong.mulist.Where(w => w.RoomID == roomInfo.RoomID).ToList();
                        var returnConnectionStatus = ReturnConnectionStatus.CreateBuilder();
                        for (int j = 0; j < mjUsers.Count(); j++)
                        {
                            var mjUser   = mjUsers[j];
                            var userInfo = Gongyong.userlist.Find(w => w.openid.Equals(mjUser.Openid));
                            if (userInfo != null)
                            {
                                returnConnectionStatus.AddConnectionStatus(ConnectionStatusInfo.CreateBuilder().SetFW(mjUser.ZS_Fw).SetConnectionStatus(mjUser.ConnectionStatus == 0 ? 0 : (userInfo.session.Connected ? 1 : 0)));
                            }
                        }
                        var data     = returnConnectionStatus.Build().ToByteArray();
                        var ipsame   = ReturnIPSame.CreateBuilder();
                        var closeGPS = ReturnCloseGPS.CreateBuilder();
                        for (int m = 0; m < mjUsers.Count; m++)
                        {
                            var mjUser    = mjUsers[m];
                            var returnDis = ReturnDis.CreateBuilder();
                            returnDis.SetFW(mjUser.ZS_Fw);
                            var userInfo = Gongyong.userlist.Find(w => w.openid.Equals(mjUser.Openid));
                            if (userInfo != null)
                            {
                                foreach (var item in mjUsers.Where(w => !w.Openid.Equals(mjUser.Openid)))
                                {
                                    var userjuliInfo = Gongyong.userlist.Find(w => w.openid.Equals(item.Openid));
                                    if (userInfo.UserIP.Equals(userjuliInfo.UserIP))
                                    {
                                        ipsame.AddFW(mjUser.ZS_Fw);
                                        ipsame.AddFW(item.ZS_Fw);
                                    }
                                    if (userjuliInfo.Lat.Equals("0,0") || string.IsNullOrEmpty(userjuliInfo.Lat))
                                    {
                                        Console.WriteLine("ConnectionStatusLogic : " + userInfo.session.Config.Ip + " lat 为 0");
                                        if (!closeGPS.FWList.Any(w => w == item.ZS_Fw))
                                        {
                                            closeGPS.AddFW(item.ZS_Fw);
                                        }
                                        // gamersend.session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, dataGPS.Length, requestInfo.MessageNum, dataGPS)));
                                    }
                                    else if (userInfo.Lat.Equals("0,0") || string.IsNullOrEmpty(userInfo.Lat))
                                    {
                                        Console.WriteLine("ConnectionStatusLogic : " + userInfo.session.Config.Ip + " lat 为 0");
                                        if (!closeGPS.FWList.Any(w => w == mjUser.ZS_Fw))
                                        {
                                            closeGPS.AddFW(mjUser.ZS_Fw);
                                        }
                                    }
                                    else
                                    {
                                        //double jl = Erth.GetDistance(userjuliInfo.Lat, userInfo.Lat);
                                        double jl = 1;                                      //  测试修改

                                        returnDis.SetFWT(item.ZS_Fw).SetDis(jl.ToString()); //将距离封装
                                        //if (jl <= GameInformationBase.DISTANCE)
                                        if (jl <= 0.001f)                                   //测试修改
                                        {
                                            Console.WriteLine("距离为 : " + jl + userjuliInfo.nickname + ":" + userjuliInfo.Lat + " , " + userInfo.nickname + " : " + userInfo.Lat);
                                            var datauser = ReturnIsJ.CreateBuilder().SetFWO(mjUser.ZS_Fw).SetFWW(item.ZS_Fw).Build().ToByteArray();
                                            foreach (var mjuser in mjUsers)
                                            {
                                                var user = Gongyong.userlist.Find(w => w.openid.Equals(mjuser.Openid));
                                                user.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7095, datauser.Length, 0, datauser)));
                                            }
                                        }
                                        var disData = returnDis.Build().ToByteArray();
                                        // userInfo.session.Logger.Debug(returnDis.ToString());
                                        userInfo.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 8004, data.Length, 0, data)));
                                        userInfo.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, disData.Length, 0, disData)));
                                    }
                                }
                            }
                        }
                        if (ipsame.FWCount > 2)
                        {
                            var dataip = ipsame.Build().ToByteArray();
                            foreach (var mjuser in mjUsers)
                            {
                                var user = Gongyong.userlist.Find(w => w.openid.Equals(mjuser.Openid));
                                user.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7096, dataip.Length, 0, dataip)));
                            }
                        }
                        if (closeGPS.FWCount > 0)
                        {
                            var dataGPS = closeGPS.Build().ToByteArray();
                            foreach (mjuser items in mjUsers)
                            {
                                UserInfo gamersend = Gongyong.userlist.Find(u => u.openid == items.Openid);
                                gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7097, dataGPS.Length, 0, dataGPS)));
                            }
                        }
                    }
                    Thread.Sleep(5000);
                }
            }
            catch (Exception ex)
            {
                MyLogger.Logger.Debug(ex);
            }
        }