Пример #1
0
        bool RollActivityPart(ref OMSDIO ini, ref int MessID, ref int LogStep, int ToStep)
        {
            if (LogStep > ToStep)
            {
                return(false);
            }

            if (MessID <= ini.GetMessageCount())
            {
                string s = ini.GetMessage(MessID);
                if (!string.IsNullOrEmpty(s))
                {
                    EventConsumer.FireLogStepEvent(s);
                }
                MessID++;
                int MC = ini.GetMessageOfs(LogStep + 1);
                if ((MC > 0) && (MessID >= MC))
                {
                    if ((ini.GetFailBits() & (1 << LogStep)) == 0)
                    //if ((ini.GetPassBits() & (1 << LogStep)) != 0)
                    {
                        EventConsumer.FireStepPassed();
                        InStep = false;
                    }
                    else
                    {
                        string ErrorLine;
                        GetErrorDescription(out ErrorLine);
                        throw new VideoException(ErrorLine);
                    }

                    do
                    {   // bypassing steps
                        LogStep++;
                        MC = ini.GetMessageOfs(LogStep);
                        System.Threading.Thread.Sleep(1);
                    }while ((MC > 0) && (MessID >= MC));
                    LogStep--;

                    if (LogStep <= ToStep)
                    {
                        EventConsumer.FireBeginStep(StepNames[LogStep]);
                        InStep = true;
                    }
                }
                return(true);
            }
            else
            {
                System.Threading.Thread.Sleep(100);
                return(false);
            }
        }
Пример #2
0
        public bool LogActivity(int Timeout, int FromStep, int ToStep, IAsyncResult Result)
        {
            InStep = false;
            DateTime Till = DateTime.Now.AddSeconds(Timeout / 1000);
            OMSDIO   ini  = new OMSDIO(omsdFileName);

            while ((ini.GetCurrentStep() < FromStep) && (DateTime.Now < Till))
            {
                System.Threading.Thread.Sleep(100);
            }
            ;

            EventConsumer.FireBeginStep(StepNames[FromStep]);
            InStep = true;

            int LogStep = FromStep;
            int MessID  = ini.GetMessageOfs(LogStep);

            while ((!Result.IsCompleted) && (DateTime.Now < Till))
            {
                RollActivityPart(ref ini, ref MessID, ref LogStep, ToStep);
            }
            if (Result.IsCompleted && (ToStep <= ini.GetCurrentStep()))
            {
                while (LogStep <= ToStep)
                {
                    if (!RollActivityPart(ref ini, ref MessID, ref LogStep, ToStep))
                    {
                        break;
                    }
                }
            }
            return(LogStep >= ToStep);
        }
Пример #3
0
        private void LogOutput(ref int MsgFrom, OMSDIO Ini, int LogStep)
        {
            int MsgTo = Ini.GetMessageOfs(LogStep + 1);

            if ((MsgTo == 0) || (MsgTo < MsgFrom))
            {
                MsgTo = Ini.GetMessageCount() + 1;
            }
            while (MsgFrom < MsgTo)
            {
                string s = Ini.GetMessage(MsgFrom++);
                if (!string.IsNullOrEmpty(s))
                {
                    EventConsumer.FireLogStepEvent(s);
                }
            }
        }