public SmcErr GetAllCameras(out List<Camera> cameraList, out List<CameraGroup> groupList, out List<NodeRelation> nodeRelationListT)
{
monitorManageServiceGetCameraList.Stop();
isGetDevicesFinish = false;
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("Enter: TiandyVideoMonitor.GetAllCameras().");
SmcErr err = new CgwError();
cameraList = new List<Camera>();
groupList = new List<CameraGroup>();
nodeRelationListT = new List<NodeRelation>();
if (this.cameraOperateLock.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME))
{
try
{
#region 深度克隆数据
foreach (KeyValuePair<string, TiandyCamera> tiandyCameraKeyValue in this.tiandyCameraDictionary)
{
TiandyCamera tiandyCamera = tiandyCameraKeyValue.Value;
//从缓存获取
Camera camera = new Camera(tiandyCamera.No, tiandyCamera.Name);
cameraList.Add(camera);
}
foreach (KeyValuePair<string, CameraGroup> groupDicKeyValue in this.groupDic)
{
CameraGroup cameraGroupTemp = new CameraGroup(groupDicKeyValue.Value.No, groupDicKeyValue.Value.Name);
groupList.Add(cameraGroupTemp);
}
foreach (NodeRelation nodeRelation in this.nodeRelationList)
{
NodeRelation nodeRelationTemp = new NodeRelation(nodeRelation.No,
nodeRelation.Path,
nodeRelation.Type);
nodeRelationListT.Add(nodeRelationTemp);
}
#endregion
}
catch (Exception e)
{
err.SetErrorNo(CgwError.GET_ALL_CAMERAS_FAILED);
logEx.Error("Get all cameras failed.Execption message:{0}", e.Message);
return err;
}
finally
{
this.cameraOperateLock.ExitReadLock();
}
}
monitorManageServiceGetCameraList.Start();
logEx.Info("Get all cameras success.");
return err;
}