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

ChangeLicense() private method

根据传入license中最大通道数量,修改通道可用状态(默认通道都是可用)
private ChangeLicense ( List &channelInfoList, int maxChannelNum ) : void
channelInfoList List
maxChannelNum int
return void
        private void ChangeLicense(ref List<ChannelInfo> channelInfoList, int maxChannelNum)
        {
            NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);

            List<ChannelInfo> inConfList = channelInfoList.FindAll(a => { return !string.IsNullOrEmpty(a.AccessCode); });
            List<ChannelInfo> outConfList = channelInfoList.FindAll(a => { return string.IsNullOrEmpty(a.AccessCode); });
            int inConfCount = inConfList.Count;
            int outConfCount = outConfList.Count;
            logEx.Trace("ChangeLicense licenseNum={0}, inConfCount={1}, outConfCount={2}", maxChannelNum, inConfCount, outConfCount);

            // 先将所有的isValid设置为true,后面再根据maxChannelNum修改
            foreach (ChannelInfo item in channelInfoList)
            {
                item.IsValid = true;
            }

            // 比较maxChannelNum跟入会会场数量
            // 优先将已入会的会场保留为true
            if (maxChannelNum <= inConfCount)
            {
                List<ChannelInfo> list = inConfList.GetRange(maxChannelNum, inConfCount - maxChannelNum);
                foreach (ChannelInfo item in list)
                {
                    item.IsValid = false;
                }

                foreach (ChannelInfo item in outConfList)
                {
                    item.IsValid = false;
                }
            }
            else if (maxChannelNum > inConfCount && maxChannelNum < inConfCount + outConfCount)
            {
                List<ChannelInfo> list = outConfList.GetRange(maxChannelNum - inConfCount, inConfCount + outConfCount - maxChannelNum);
                foreach (ChannelInfo item in list)
                {
                    item.IsValid = false;
                }
            }
            else
            {
                return;
            }
        }