CgwMonitorManage.VideoMonitor.VideoMonitorManage.DecoderCameraNo C# (CSharp) Method

DecoderCameraNo() private method

解码摄像头编号
private DecoderCameraNo ( string encodedCameraNo, string &cameraNo, IVideoMonitor &videoMonitor ) : SmcErr
encodedCameraNo string 编码过的摄像头编号
cameraNo string 解码后的摄像头编号
videoMonitor IVideoMonitor 监控平台实例
return CgwMonitorManage.SmcError.SmcErr
        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;
        }