private uint MakeIFrame(string label)
{
SmcErr err = new CgwError();
string channelLabel = string.Empty;
string cameraNo = string.Empty;
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("MakeIFrame start. label={0}", label);
// 判断输入号码是否为空
if (string.IsNullOrEmpty(label))
{
// 错误码 日志
logEx.Trace("MakeIFrame param error");
return 0;
}
try
{
bool successed = this.monitorChannelRelationDicLocker.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME);
// 申请互斥
if (successed)
{
try
{
foreach (KeyValuePair<string, MonitorChannelRelation> pair in this.monitorChannelRelationDic)
{
if (pair.Key.IndexOf(label) == 0)
{
channelLabel = pair.Key;
break;
}
}
if (string.IsNullOrEmpty(channelLabel))
{
// 错误码 日志
logEx.Trace("MakeIFrame can't find label:{0}", label);
return 0;
}
cameraNo = this.monitorChannelRelationDic[channelLabel].CameraNo;
}
finally
{
// 释放互斥量
this.monitorChannelRelationDicLocker.ExitReadLock();
}
}
else
{
// 日志
logEx.Error("MakeIFrame: Enert Read Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.monitorChannelRelationDicLocker.WaitingReadCount, this.monitorChannelRelationDicLocker.WaitingWriteCount);
return 0;
}
}
catch (Exception ex)
{
// 日志
logEx.Error(ex, "MakeIFrame: Enter Read Lock Exception.");
return 0;
}
// 调用平台管理接口
err = CgwMonitorManageAdapter.Instance().MakeIFrame(cameraNo);
if (!err.IsSuccess())
{
logEx.Trace("MakeIFrame cameraNo:{0} failed errNo={1}.", cameraNo, err.ErrNo);
}
// 成功日志
logEx.Trace("MakeIFrame channelLabel={0} cameraNo={1} successfully", channelLabel, cameraNo);
return 1;
}