/// <summary> /// 通知资源状态信息,登录用户回调状态 /// </summary> /// <param name="structResStaIndi"></param> private void CallbackResStatusDelegateFun(ref strResourceStatusIndicator structResStaIndi) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: CallbackResStatusDelegateFun.status_type = {0},status_value = {1}", Enum.GetName(typeof(resource_status_t), structResStaIndi.status_type), Enum.GetName(typeof(res_status_value_t), structResStaIndi.status_value)); if (structResStaIndi.status_type == resource_status_t.RESREGSTATUS_PROXY && structResStaIndi.status_value == res_status_value_t.STATUS_REGOK) { logEx.Trace("{0} Login eLTE Success", structResStaIndi.ResId); ////休息2秒,等缓存回调上来后查设备,否则设备为0 //Thread.Sleep(2000); //Thread th = new Thread(new ThreadStart(() => //{ // //开始获取摄像机 // this.GetAllCamerasTimer(null, null); // //启动定时器 // this.updateCameraTimer.Start(); //})); //th.Start(); } else if (structResStaIndi.status_type == resource_status_t.RESREGSTATUS_PROXY && structResStaIndi.status_value == res_status_value_t.STATUS_NOT_FOUND)//密码不正确,不进行重连 { logEx.Info("{0} Login eLTE Failed,STATUS_NOT_FOUND",structResStaIndi.ResId); } else if (structResStaIndi.status_type == resource_status_t.RESREGSTATUS_PROXY && structResStaIndi.status_value != res_status_value_t.STATUS_UNAUTHORIZED) { logEx.Trace("{0} Login eLTE Failed", structResStaIndi.ResId); if (IsNeedLogin)//判断是否需要登录 { eLTELoginInfo loginInfo = new eLTELoginInfo(); loginInfo.Ip = ip; loginInfo.Port = iPort; loginInfo.User = user; //loginInfo.Pwd = password; loginInfo.Pwd = CommonFunction.DecryptByte2Str(pwdByte, CgwConst.PASSWORD_TAG); loginInfo.PTTUSER = bPttUser; loginInfo.FIXEDCAMERA = bFixedCamera; loginInfo.NotFirstLogin = true; //使用线程轮询加载监控平台 Thread loaderThread = new Thread(LoginThread); loaderThread.IsBackground = true; loaderThread.Start(loginInfo); loaderThread.Join(20000); } } }
/// <summary> /// 服务用户状态信息回调 /// </summary> /// <param name="modSta"></param> private void CallModuleStatusDelegateFun(ref strDCModuleStatusIndicator modSta) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Info("Enter:CallModuleStatusDelegateFun, Type : {0},Status : {1}. ", Enum.GetName(typeof(dc_module_t), modSta.m_module_type), Enum.GetName(typeof(module_status_t), modSta.m_status_value)); if (dc_module_t.SIP_MODULE == modSta.m_module_type) { if (module_status_t.SIP_RECONNECT == modSta.m_status_value || module_status_t.KICK_OFF == modSta.m_status_value || module_status_t.SIP_KEEPALIVE_REJECT==modSta.m_status_value) { eLTELoginInfo loginInfo = new eLTELoginInfo(); loginInfo.Ip = ip; loginInfo.Port = iPort; loginInfo.User = user; //loginInfo.Pwd = password; loginInfo.Pwd = CommonFunction.DecryptByte2Str(pwdByte, CgwConst.PASSWORD_TAG); loginInfo.PTTUSER = bPttUser; loginInfo.FIXEDCAMERA = bFixedCamera; loginInfo.NotFirstLogin = true; //使用线程轮询加载监控平台 Thread loaderThread = new Thread(LoginThread); loaderThread.IsBackground = true; loaderThread.Start(loginInfo); loaderThread.Join(20000); } else if (module_status_t.PASSWORD_CHANGE == modSta.m_status_value || module_status_t.USER_DELETE == modSta.m_status_value) { logEx.Error("User Status Exception,Not ReConnect"); } } }
/// <summary> /// 初始化eLTE台 /// </summary> /// <param name="monitorConfigElement">监控平台配置节点</param> /// <returns></returns> public SmcError.SmcErr Load(System.Xml.XmlElement monitorConfigElement) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Info("Enter: eLTEVideoMonitor.Load()."); SmcErr err = new CgwError(); try { //解析xml节点,获取所需参数 this.monitorId = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.ID_TAG); string port = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.PORT_TAG); string localPort = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.LOCAL_ELTE_PORT); user = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.USER_TAG); pwdByte = CommonFunction.EncryptStr2Byte(CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.PASSWORD_TAG),CgwConst.PASSWORD_TAG); ip = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.IP_TAG); bPttUser = bool.Parse(LoadElTEParamters(monitorConfigElement, CgwConst.PTT_USER, boolArrays)); bFixedCamera = bool.Parse(LoadElTEParamters(monitorConfigElement, CgwConst.FIXED_CAMERA, boolArrays)); fmtValue = LoadElTEParamters(monitorConfigElement, CgwConst.FMT_VALUE, fmtValueArrays); cameraType = LoadElTEParamters(monitorConfigElement, CgwConst.CAMERA_TYPE, cameraTypeArrays); userConfirmType = LoadElTEParamters(monitorConfigElement, CgwConst.USER_CONFIRM_TYPE,userConfirmTypeArrays); muteType = LoadElTEParamters(monitorConfigElement, CgwConst.MUTE_TYPE,muteTypeArrays); iPort = 0; if (!int.TryParse(port, out iPort)) { err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID); logEx.Error("Load eLTE monitor failed.Execption PORT_TAG:{0}.", port); return err; } ilocalPort = 0; if (!int.TryParse(localPort, out ilocalPort)) { err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID); logEx.Error("Load eLTE monitor failed.Execption PORT_TAG:{0}.", localPort); return err; } //用户名是数值 int iUserName = 0; if (!int.TryParse(user, out iUserName)) { err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID); logEx.Error("Load eLTE monitor failed.Execption PORT_TAG:{0}.", user); return err; } eLTELoginInfo loginInfo = new eLTELoginInfo(); loginInfo.Ip = ip; loginInfo.Port = iPort; loginInfo.User = user; loginInfo.Pwd = CommonFunction.DecryptByte2Str(pwdByte,CgwConst.PASSWORD_TAG); loginInfo.PTTUSER = bPttUser; loginInfo.FIXEDCAMERA = bFixedCamera; IsNeedLogin = true; //使用线程轮询加载监控平台 Thread loaderThread = new Thread(LoginThread); loaderThread.IsBackground = true; loaderThread.Start(loginInfo); } catch (Exception e) { err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID); logEx.Error("Load eLTEVideoMonitor failed.Execption message:{0}.", e.Message); return err; } logEx.Info("Load video monitor success.Monitor id:{0}.", this.monitorId); return err; }