public SmcErr Load(System.Xml.XmlElement monitorConfigElement)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Info("Enter: T28181VideoMonitor.Load().");
SmcErr err = new CgwError();
try
{
//解析xml节点,获取所需参数
string queryDeviceTimeOut = string.Empty;
monitorId = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.ID_TAG);
domain = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.SERVERIP_TAG);
sipPort = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.SIP_PORT);
deviceID = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.Device_ID);
username = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.USER_TAG);
//password = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.PASSWORD_TAG);
pwdByte = CommonFunction.EncryptStr2Byte(CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.PASSWORD_TAG),CgwConst.PASSWORD_TAG);
localPort = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.LOCAL_PORT);
queryDeviceTimeOut = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.QueryDeviceTimeOut);
platformType = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.Platform_Type);
localSignalGateway = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.LOCAL_SIGNAL_GATEWAY);
serverSignalGateway = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.SERVER_SIGNAL_GATEWAY);
serverSipAccount = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.SERVER_SIP_ACCOUNT);
//登陆T28181监控平台的sip加密密码
string serverSipPasswd = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.SERVER_SIP_PASSWD);
//检测配置文件是否有错误
int iSipPort = 0;
bool bRet = int.TryParse(sipPort, out iSipPort);
if (bRet == false)
{
err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID);
logEx.Error("Load T28181 monitor failed.Execption sipPort:{0}.", sipPort);
return err;
}
int iLocalPort = 0;
bRet = int.TryParse(localPort, out iLocalPort);
if (bRet == false)
{
err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID);
logEx.Error("Load T28181 monitor failed.Execption localPort:{0}.", localPort);
return err;
}
bRet = int.TryParse(queryDeviceTimeOut, out iQueryDeviceTimeOut);
//转为毫秒
iQueryDeviceTimeOut *= 1000;
if (bRet == false)
{
err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID);
logEx.Error("Load T28181 monitor failed.Execption QueryDeviceTimeOut:{0}.", iQueryDeviceTimeOut);
return err;
}
//开始连接、注册Sip服务器
if (platformType == "huawei")
{
serverSipAccount = "";
serverSipPasswd = "";
}
StartConnectRegisterSip(domain, iSipPort, iLocalPort, username, CommonFunction.DecryptByte2Str(pwdByte,CgwConst.PASSWORD_TAG), localSignalGateway, serverSignalGateway, serverSipAccount, serverSipPasswd);
//开始查询设备列表
Thread th = new Thread(new ThreadStart(()
=>
{
GetAllCamerasTimer(null, null);
}));
th.Start();
//启动定时器
updateCameraTimer.Start();
}
catch (Exception e)
{
err.SetErrorNo(CgwError.MONITOR_CONFIG_FILE_INVALID);
logEx.Error("Load T28181 monitor failed.Execption message:{0}.", e.Message);
return err;
}
logEx.Info("Load T28181 monitor success.Monitor id:{0}.", this.monitorId);
return err;
}