public SmcErr Load(System.Xml.XmlElement monitorConfigElement)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("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.IP_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);
localPort = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.LOCAL_PORT);
queryDeviceTimeOut = CommonFunction.GetSingleNodeValue(monitorConfigElement, CgwConst.QueryDeviceTimeOut);
//检测配置文件是否有错误
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服务器
StartConnectRegisterSip(domain, iSipPort, iLocalPort, username, password);
//开始查询设备列表
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;
}