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

SwitchChannelRelation() public method

切换通道关联
public SwitchChannelRelation ( string channelLabel, string cameraNo ) : SmcErr
channelLabel string 通道号码
cameraNo string 摄像头编号
return Cgw.SmcError.SmcErr
        public SmcErr SwitchChannelRelation(string channelLabel, string cameraNo)
        {
            SmcErr err = new CgwError();
            NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
            logEx.Info("SwitchChannelRelation start.");

            try
            {
                bool successed = this.monitorChannelRelationDicLocker.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME);
                // 申请互斥
                if (successed)
                {
                    try
                    {
                        if (!this.monitorChannelRelationDic.ContainsKey(channelLabel))
                        {
                            // 错误码 日志
                            logEx.Error("SwitchChannelRelation can't find channelLabel:{0}", channelLabel);
                            err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_NOT_FIND_CHANNELNO);
                            return err;
                        }

                        // 如果通道没有入会,不允许关联摄像头
                        if (string.IsNullOrEmpty(this.monitorChannelRelationDic[channelLabel].ConfAccessCode))
                        {
                            // 错误码 日志
                            logEx.Error("SwitchChannelRelation channelNo:{0} confAccessCode is null", channelLabel);
                            err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_NOT_IN_CONF);
                            return err;
                        }

                    }
                    finally
                    {
                        // 释放互斥量
                        this.monitorChannelRelationDicLocker.ExitReadLock();
                    }
                }
                else
                {
                    // 日志
                    logEx.Error("SwitchChannelRelation: Enter Write Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.monitorChannelRelationDicLocker.WaitingReadCount, this.monitorChannelRelationDicLocker.WaitingWriteCount);
                    err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_GET_LOCK_FAIL);
                }

                // 调用内部接口,切换通道视频
                err = this.SwitchChannelVideo(channelLabel, cameraNo);
                if (!err.IsSuccess())
                {
                    // 日志
                    this.PrintLog();
                    logEx.Error("SwitchChannelRelation SwitchChannelVideo channelNo:{0} cameraNo:{1} failed", channelLabel, cameraNo);
                    return err;
                }
            }
            catch (Exception ex)
            {
                // 日志
                logEx.Error(ex, "SwitchChannelRelation: Enter Write Lock Exception.");
                err.SetErrorNo(CgwError.ERR_CGW_CHANNEL_SERVICE_ADNORMAL);
            }

            // I帧重传
            this.MakeIFrame(channelLabel);

            this.PrintLog();

            // 成功日志
            logEx.Info("SwitchChannelRelation successfully,channelLabel:{0},cameraNo:{1}", channelLabel, cameraNo);

            return err;
        }