private SmcErr DecoderCameraNo(string encodedCameraNo, out string cameraNo, out IVideoMonitor videoMonitor)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("Enter: VideoMonitorManage.DecoderCameraNo({0}).", encodedCameraNo);
SmcErr err = new CgwError();
cameraNo = string.Empty;
videoMonitor = null;
//判断方式不合适
if(string.IsNullOrEmpty(encodedCameraNo))
//if (encodedCameraNo == null)
{
logEx.Error("Camera no is null.");
err.SetErrorNo(CgwError.CAMERA_NOT_FOUND);
return err;
}
if (!encodedCameraNo.Contains(CgwConst.MONITOR_SEPARATOR_TAG))
{
logEx.Error("Camera no is not found. Camera no:{0}.", encodedCameraNo);
err.SetErrorNo(CgwError.CAMERA_NOT_FOUND);
return err;
}
string[] monirotAndCamera = encodedCameraNo.Split(
new string[] { CgwConst.MONITOR_SEPARATOR_TAG },
StringSplitOptions.RemoveEmptyEntries);
if (this.monitorsOperateLock.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME))
{
try
{
//encodedCameraNo是用监控平台id+分割符MONITOR_SEPARATOR_TAG编码的,
//用分隔符MONITOR_SEPARATOR_TAG分割后,长度为2,否则为非法编号
if (monirotAndCamera.Length == CgwConst.ENCODE_CAMERANO_LENGHT)
{
if (monitorsDictionary.ContainsKey(monirotAndCamera[0]))
{
videoMonitor = monitorsDictionary[monirotAndCamera[0]];
cameraNo = monirotAndCamera[1];
return err;
}
else
{
logEx.Error("Monitor id is not found. Monitor id:{0}.", monirotAndCamera[0]);
err.SetErrorNo(CgwError.MONITOR_NOT_FOUND);
return err;
}
}
else
{
logEx.Error("Camera no is invalid. Camera no:{0}.", encodedCameraNo);
err.SetErrorNo(CgwError.CAMERA_NOT_FOUND);
return err;
}
}
catch (Exception e)
{
err.SetErrorNo(CgwError.CAMERA_NOT_FOUND);
logEx.Error("Decoder camera no failed. Execption message:{0}", e.Message);
}
finally
{
this.monitorsOperateLock.ExitReadLock();
}
}
return err;
}