Cgw.Channel.MonitorChannelRelationManager.MakeIFrame C# (CSharp) Method

MakeIFrame() private method

I帧重传 参数label,由软终端回调的是code,通道管理调用的是channelLabel
private MakeIFrame ( string label ) : uint
label string
return uint
        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;
        }