示例#1
0
    public void NormalWorkTestPasses()
    {
        var workManager = new WorkManager();

        Vector3 result = Vector3.zero;

        Work work = SimpleWork.Create(() => { result = Vector3.one; });

        workManager.StartWork(work);
        workManager.Update(1, 1);
        Assert.That(result, Is.EqualTo(Vector3.one));

        Vector3 result2 = Vector3.zero;

        work = WaitSecondsWork.Create(5);
        work.ContinueWith(_ => { result2 = Vector3.one; });
        workManager.StartWork(work);
        workManager.Update(1, 1);
        workManager.Update(1, 1);
        Assert.That((work as WaitSecondsWork).LeftSeconds, Is.EqualTo(3));
        Assert.That(work.WorkStatus == WorkStatus.Running);
        workManager.Update(1, 1);
        workManager.Update(1, 1);
        workManager.Update(1, 1);
        Assert.That(result2, Is.EqualTo(Vector3.one));

        result = Vector3.zero;
        work   = TimerWork.Create(0.5f, () => { result.x += 1; Debug.Log("Excute"); });
        workManager.StartWork(work);
        workManager.Update(0.5f, 0.5f);
        Assert.That(result.x, Is.EqualTo(1f));

        workManager.Update(1f, 1f);
        Assert.That(result.x, Is.EqualTo(3f));
    }
示例#2
0
        private void InitializeSpools()
        {
            try
            {
                FileLogger.Info(Logger, "Spool configurati: " + Cfg.Spools.Count);
                foreach (var spool in Cfg.Spools)
                {
                    var mySpool = new Spool(spool.Id);
                    FileLogger.Info(Logger, "Configurazione Spool: " + mySpool.Id);

                    // Inizializzo i timers dello spool
                    FileLogger.Info(Logger, "Timers configurati: " + spool.Timers.Count);
                    foreach (var timer in spool.Timers)
                    {
                        FileLogger.Debug(Logger, String.Format("Configurazione timer: {0} - {1}", timer.Id, timer.Type));

                        //Timer di riferimento
                        var tw = new TimerWork(timer.Type)
                        {
                            Id        = timer.Id,
                            Duetime   = timer.DueTime,
                            Period    = timer.Period,
                            BeginTime = timer.BeginTime,
                            EndTime   = timer.EndTime
                        };

                        var configuredModules = Cfg.Modules.Where(module => module.Spool == spool.Id && module.Timer == timer.Id && module.Enabled).ToList();
                        if (configuredModules.Count <= 0)
                        {
                            continue;
                        }

                        var timerModules = configuredModules.Select(configuredModule => Modules[configuredModule.Id]).ToList();

                        // Inizializzo tutti i moduli del timer
                        foreach (var jeepThreadedModule in timerModules)
                        {
                            jeepThreadedModule.Timer = tw;
                            JeepModules[jeepThreadedModule].Start();
                        }
                    }

                    FileLogger.Debug(Logger, "Spool configurato correttamente: " + mySpool.Id);
                    Spools.Add(mySpool.Id, mySpool);
                }

                foreach (var s in Spools.Values)
                {
                    FileLogger.Debug(Logger, "Spool configurato: " + s.Id);
                    foreach (var timer in s.Timers.Values)
                    {
                        FileLogger.Debug(Logger, "TimerWork configurato: " + timer);
                    }
                }

                if (Spools.Count != 0)
                {
                    return;
                }
                // Nessun modulo caricato
                FileLogger.Error(Logger, "Nessun modulo caricato");
                // Fermo il servizio
                Stop();
            }
            catch (Exception exc)
            {
                FileLogger.Error(Logger, "Errore in configurazione Spools", exc);
                Stop();
            }
        }