Пример #1
0
 protected override bool DoApplicationAfterInit()
 {
     m_VisitEvent = new Time.Event(App.EventTimer,
                                   name: nameof(CmsFacade),
                                   body: e => visit(),
                                   interval: TimeSpan.FromMilliseconds(VISIT_EVENT_INTERVAL_MSEC));
     return(base.DoApplicationAfterInit());
 }
Пример #2
0
        protected override void DoStart()
        {
            if (!Directory.Exists(DataDirectoryRoot))
            {
                throw new PileException(StringConsts.PILE_MMF_NO_DATA_DIRECTORY_ROOT_ERROR.Args(DataDirectoryRoot));
            }

            Directory.CreateDirectory(DataDirectory);

            readCurrentTypeRegistry();

            base.DoStart();

            //load existing data
            var segFiles = MMFMemory.GetSegmentFileNames(DataDirectory);

            var pidx = -1;

            for (var i = 0; i < segFiles.Length; i++)
            {
                var segFile = segFiles[i];
                for (var j = pidx + 1; j < segFile.Value; j++)
                {
                    __addSegmentAtStart(null);
                }
                pidx = segFile.Value;

                var memory  = new MMFMemory(DataDirectory, segFile.Value);
                var segment = new DefaultPileBase._segment(this, memory, false);
                __addSegmentAtStart(segment);
            }

            //1 thread since this is a io-bound operation
            var segments = __getSegmentsAtStart();

            Task.Delay(500).ContinueWith((a) => crawlSegmentsAtStart(segments), TaskContinuationOptions.LongRunning);

            m_ManagerEvent = new Azos.Time.Event(App.EventTimer,
                                                 interval: new TimeSpan(0, 0, 20),
                                                 enabled: true,
                                                 body: _ => AcceptManagerVisit(this, DateTime.UtcNow),
                                                 bodyAsyncModel: Time.EventBodyAsyncModel.AsyncTask)
            {
            };
        }