public Boolean Run(Dictionary<String, FoxRawDataEachCollector> rawDataEachControllers, ref FoxCaptureSlideController slideController)
        {
            Boolean bCreateSlideController = false;
            if (_mute.On())
            {
                // 대기. 1초 안에 캡쳐 기록 시작한 것이 있어서 일단 좀 대기한다.
            }
            else
            {
                // 선물의 속도를 측정하고 선물의 속도가 일정 속도 이상(가령, 2틱/1sec)인 경우라면
                // Capture를 하여 기록한다.
                double futureVelocity = GetFutureVelocity(_policy.VelocityTimeUnitMilliSec, rawDataEachControllers);

                if (Math.Abs(futureVelocity) >= _policy.FutureLowerBound)
                {
                    // CaptureSlide를 만들고 mute한다.
                    // 기록을 시작하면 1초 정도는 속도 측정을 하지 않도록 한다.
                    slideController = RegisterCaptureSlide(futureVelocity, rawDataEachControllers, this.IsToDB_InRunning);
                    bCreateSlideController = true;

                    _mute.Reset();

                }
            }

            // 등록된 CaptureSlide를 실행하여 Capture를 계속 진행하도록 한다.
            RunRegisteredCaptureSlides(rawDataEachControllers);

            return bCreateSlideController;
        }
        FoxCaptureSlideController RegisterCaptureSlide(
            double futureVelocity, 
            Dictionary<String, FoxRawDataEachCollector> rawDataEachControllers,
            Boolean bToDB_InRunning)
        {
            const int CAPTURE_SLIDE_TIME_OFFSET = 5;
            int groupID = FoxCaptureSlideCollection.GetGroupID_and_IncreaseByOne();
            FoxCaptureSlideController slideController = new FoxCaptureSlideController(
                futureVelocity,
                groupID,
                CAPTURE_SLIDE_TIME_OFFSET,
                _policy,
                bToDB_InRunning);

            slideController.SaveCaptureSlide();
            slideController.SaveBeforeData(rawDataEachControllers);

            _liveCaptureSlides.Add(slideController);

            return slideController;
        }
예제 #3
0
        // 실전에서는 이곳을 호출하도록 한다.
        public Boolean UpdateDataAndMonitorChance(ref FoxCaptureSlideController brandNewController)
        {
            foreach (FoxRawDataEachCollector eachDataController in _eachDataControllers.Values)
            {
                eachDataController.Run();
            }

            if (_foxCaptureController.Run(_eachDataControllers, ref brandNewController))
            {
                // 새로 SlideController가 생겼다.
                return true;
            }
            return false;
        }