old mode 100755
new mode 100644
File was renamed from ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |
| | |
| | | using System.Security.Cryptography;
|
| | | using System.Text;
|
| | |
|
| | | namespace Shared.Phone.UserCenter
|
| | | namespace Shared.Phone |
| | | {
|
| | | /// <summary>
|
| | | /// WiFi的逻辑
|
| | |
| | | /// </summary>
|
| | | private bool hadAddListenNetWork = false;
|
| | |
|
| | | /// <summary>
|
| | | /// 能否访问http
|
| | | /// </summary>
|
| | | private bool m_CanAccessHttp = true;
|
| | | /// <summary>
|
| | | /// 上一次访问http的时间
|
| | | /// </summary>
|
| | | private DateTime oldAccessHttpTime = DateTime.Now;
|
| | | /// <summary>
|
| | | /// 能否访问http
|
| | | /// </summary>
|
| | | public bool CanAccessHttp
|
| | | {
|
| | | set
|
| | | {
|
| | | m_CanAccessHttp = value;
|
| | | oldAccessHttpTime = DateTime.Now;
|
| | | }
|
| | | get
|
| | | {
|
| | | //8秒后允许再次访问
|
| | | if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 8 * 1000)
|
| | | {
|
| | | oldAccessHttpTime = DateTime.Now;
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | | }
|
| | | /// <summary>
|
| | | /// 变更网络时的事件
|
| | | /// </summary>
|
| | |
| | | //没有网络
|
| | | if (value == 0)
|
| | | {
|
| | | this.CanAccessHttp = false;
|
| | | //关闭Socket
|
| | | ZigBee.Common.Application.FindGateWaySocket.Stop();
|
| | | }
|
| | | //WIFI或者4G时
|
| | | if (value == 1 || value == 2)
|
| | | {
|
| | | //允许联网
|
| | | this.CanAccessHttp = true;
|
| | | this.changedNetworkTime = DateTime.Now.ToString("yyyyMMdd HH.mm.ss");
|
| | | //当前执行此线程的时间
|
| | | string thisThreadTime = this.changedNetworkTime;
|
| | |
| | | //不管如何,都要显示转圈
|
| | | ProgressBar.Show();
|
| | |
|
| | | //检测是否已经完成账号信息初始化
|
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false
|
| | | && Common.Config.Instance.HomeId != string.Empty)
|
| | | {
|
| | | //重新初始化账号信息
|
| | | UserCenterLogic.ReInitUserAccoutInfo();
|
| | | //因为上面这个东西耗时蛮久的,所以处理完之后进行判断
|
| | | if (thisThreadTime != this.changedNetworkTime)
|
| | | {
|
| | | //在处理的过程中,切换了网络,把下面的处理交给另外的线程
|
| | | return;
|
| | | }
|
| | | }
|
| | | //重新初始化Socket
|
| | | ZigBee.Common.Application.FindGateWaySocket.Stop();
|
| | | System.Threading.Thread.Sleep(100);
|
| | |
| | | //断掉远程
|
| | | ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce();
|
| | |
|
| | | //如果是wifi
|
| | | if (value == 2)
|
| | | {
|
| | | //启动socket |
| | | ZigBee.Common.Application.FindGateWaySocket.Start();
|
| | | //借用一下这个变量(检测能否广播到网关)
|
| | | UserCenterResourse.DicReceiveGatewayTest = new Dictionary<string, ZigBee.Device.ZbGateway>();
|
| | | UserCenterResourse.HideOption.CheckCanReceiveGateway = 1;
|
| | | //固定等个3秒吧
|
| | | System.Threading.Thread.Sleep(2500);
|
| | | if (thisThreadTime != this.changedNetworkTime)
|
| | | |
| | | //重新初始化账号信息 (可能的状态码:Sucess NotNetWork AuthorityChangd TokenTimeOunt)(-1:无网 1:正常 2:登陆不进去 3:权限变更了) |
| | | var result = HdlAccountLogic.Current.ReInitUserAccoutInfo(); |
| | | if (result == AccountStatu.TokenTimeOunt || result == AccountStatu.AuthorityChangd) |
| | | {
|
| | | //变更了网络,交由其他线程处理
|
| | | //这两个已经被踢到了登陆界面 |
| | | ProgressBar.Close(); |
| | | return;
|
| | | }
|
| | | UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
|
| | | //当无网时,里面已经等待了3秒 |
| | | int waitCount = result == AccountStatu.NotNetWork ? 3 : 9; |
| | | //固定等待4.5秒 |
| | | for (int i = 0; i < waitCount; i++) |
| | | { |
| | | if (thisThreadTime != this.changedNetworkTime) |
| | | { |
| | | //在处理的过程中,切换了网络,把下面的处理交给另外的线程 |
| | | return; |
| | | } |
| | | System.Threading.Thread.Sleep(500);
|
| | | } |
| | |
|
| | | bool canReceiveGw = false;
|
| | | foreach (var gateway in UserCenterResourse.DicReceiveGatewayTest.Values)
|
| | | {
|
| | | if (gateway.HomeId == Common.Config.Instance.Home.Id)
|
| | | {
|
| | | //能够搜索得到网关
|
| | | canReceiveGw = true;
|
| | | break;
|
| | | }
|
| | | }
|
| | | UserCenterResourse.DicReceiveGatewayTest = null;
|
| | | //设置远程连接的初始值
|
| | | ZigBee.Device.ZbGateway.IsRemote = canReceiveGw == false;
|
| | | if (canReceiveGw == false)
|
| | | {
|
| | | //如果是远程的话,追加等待时间(总共5秒)
|
| | | System.Threading.Thread.Sleep(2000);
|
| | | }
|
| | | }
|
| | | else if (value == 1)
|
| | | {
|
| | | //如果是4G的话,直接等待
|
| | | System.Threading.Thread.Sleep(4500);
|
| | | }
|
| | | ProgressBar.Close();
|
| | |
|
| | | }, ShowErrorMode.NO);
|