示例#1
0
        public static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("PtilopsisCliServer 0.1");
                Console.WriteLine("2019-11-08");
                DBManager.Get().Start();

                RunnerManager.Get().Start();

                TaskManager.Get().Start();

                AppManager.Get().Start();

                EventManager.Get().Start();

#if DEBUG
                string myEnvironmentValue = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
                if (myEnvironmentValue == "Development")
                {
                    string path = Path.Combine(Environment.CurrentDirectory.ToString(), "../ptilopsis-web/build");
                    Console.WriteLine(Directory.GetCurrentDirectory());
                    FileHelper.CopyDirectory(path, "./ClientApp");
                }
#endif

                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception e)
            {
                Console.WriteLine("Start Error£¡Message:" + e.ToString());
                Thread.Sleep(3000);
            }
        }
        public void ExeTest()
        {
            var pluginPath     = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Plugins");
            var currentDir     = new DirectoryInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase);
            var rootPath       = currentDir.Parent.Parent.Parent;
            var lib1V1Path     = Path.Combine(rootPath.FullName, @"bin\MEFTestExe1.exe");
            var lib1PluginPath = Path.Combine(pluginPath, "MEFTestExe1.exe");

            // Clear plugin folder
            if (Directory.Exists(pluginPath))
            {
                Directory.Delete(pluginPath, true);
            }
            Directory.CreateDirectory(pluginPath);

            // Copy lib1
            File.Copy(lib1V1Path, lib1PluginPath);

            var runner = RunnerManager.CreateRunner <Runner, IExport>("Plugins", pluginPath);

            var actual   = runner.DoSomething();
            var expected = "Exe1";

            Assert.AreEqual(expected, actual);
        }
        public void ChangePluginFolderTest()
        {
            var pluginPath     = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Plugins2");
            var currentDir     = new DirectoryInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase);
            var rootPath       = currentDir.Parent.Parent.Parent;
            var lib1V1Path     = Path.Combine(rootPath.FullName, @"bin\MEFTestLib1.dll");
            var lib1V2Path     = Path.Combine(rootPath.FullName, @"bin\MEFTestLib1-v2.dll");
            var lib2Path       = Path.Combine(rootPath.FullName, @"bin\MEFTestLib2.dll");
            var lib1PluginPath = Path.Combine(pluginPath, "MEFTestLib1.dll");
            var lib2PluginPath = Path.Combine(pluginPath, "MEFTestLib2.dll");

            // Clear plugin folder
            if (Directory.Exists(pluginPath))
            {
                Directory.Delete(pluginPath, true);
            }
            Directory.CreateDirectory(pluginPath);
            // Copy lib1
            File.Copy(lib1V1Path, lib1PluginPath);

            var runner = RunnerManager.CreateRunner <Runner, IExport>("Plugins", pluginPath);

            var actual   = runner.DoSomething();
            var expected = "Lib1";

            Assert.AreEqual(expected, actual);

            // Copy lib2
            File.Copy(lib2Path, lib2PluginPath);
            runner.Recompose();
            actual   = runner.DoSomething();
            expected = "Lib1 Lib2";

            Assert.AreEqual(expected, actual);
            // Replace lib1 with v2
            File.Delete(lib1PluginPath);
            runner.Recompose();
            File.Copy(lib1V2Path, lib1PluginPath, true);
            runner.Recompose();
            actual   = runner.DoSomething();
            expected = "Lib2 Lib1-v2";

            Assert.AreEqual(expected, actual);

            // Delete Lib1
            File.Delete(lib1PluginPath);
            runner.Recompose();
            actual   = runner.DoSomething();
            expected = "Lib2";

            Assert.AreEqual(expected, actual);

            // Delete Lib2
            File.Delete(lib2PluginPath);
            runner.Recompose();
            actual   = runner.DoSomething();
            expected = string.Empty;

            Assert.AreEqual(expected, actual);
        }
示例#4
0
    void Awake()
    {
        gameManager = FindObjectOfType <RunnerManager>();

        label = GetComponent <Text>();
        text  = label.text;
    }
示例#5
0
 void Awake()
 {
     renderer     = GetComponent <SpriteRenderer>();
     gameManager  = FindObjectOfType <RunnerManager>();
     genManager   = FindObjectOfType <GeneratorManager>();
     plantManager = FindObjectOfType <PlantOptionsManager>();
 }
示例#6
0
    private void Awake()
    {
        manager    = FindObjectOfType <RunnerManager>();
        genManager = FindObjectOfType <GeneratorManager>();

        audio = GetComponent <AudioSource>();
    }
示例#7
0
    void Awake()
    {
        gameManager = FindObjectOfType <RunnerManager>();
        genManager  = FindObjectOfType <GeneratorManager>();
        width       = GetComponent <SpriteRenderer>().bounds.size.x;

        genManager.ResolutionChanged.AddListener(DoSizing);
    }
示例#8
0
    void Awake()
    {
        gameManager = FindObjectOfType <RunnerManager>();
        gameManager.GameStarted.AddListener(OnGameStarted);
        gameManager.GameEnded.AddListener(OnGameEnded);

        label = GetComponent <Text>();
    }
        void RunnerManager_RunnerManagerUnhanledRuntimeException(string id, string ExceptionType, string ExceptionMessage, string StackTraceData, List <RunManager.StackTraceItem> StackTrace)
        {
            string localiseMsg = RuntimeExceptionsStringResources.Get(ExceptionMessage);

            WorkbenchServiceFactory.OperationsService.AddTextToOutputWindowSync(id, string.Format(Form1StringResources.Get("OW_RUNTIME_EXCEPTION{0}_MESSAGE{1}"), ExceptionType, localiseMsg) + Environment.NewLine);
            if (StackTraceData != null)
            {
                WorkbenchServiceFactory.OperationsService.AddTextToOutputWindowSync(id, string.Format(Form1StringResources.Get("OW_RUNTIME_EXCEPTION_STACKTRACE{0}"), StackTraceData) + Environment.NewLine);
            }
            RunManager.StackTraceItem ToSend = null;
            foreach (RunManager.StackTraceItem StackTraceItem in StackTrace)
            {
                if (StackTraceItem.SourceFileName != null)
                {
                    if (ToSend == null && File.Exists(StackTraceItem.SourceFileName))
                    {
                        ToSend = StackTraceItem;
                    }
                    if (Workbench.UserOptions.SkipStakTraceItemIfSourceFileInSystemDirectory &&
                        (Path.GetDirectoryName(StackTraceItem.SourceFileName) == WorkbenchServiceFactory.BuildService.CompilerOptions.SearchDirectory ||
                         Path.GetDirectoryName(StackTraceItem.SourceFileName) == WorkbenchServiceFactory.BuildService.CompilerOptions.SearchDirectory + "Source"))
                    {
                        continue;
                    }
                    if (!(bool)Workbench.VisualEnvironmentCompiler.SourceFilesProvider(StackTraceItem.SourceFileName, PascalABCCompiler.SourceFileOperation.Exists))
                    {
                        string fn = Path.Combine(WorkbenchStorage.LibSourceDirectory, Path.GetFileName(StackTraceItem.SourceFileName));
                        if (File.Exists(fn))
                        {
                            StackTraceItem.SourceFileName = fn;
                        }
                        else
                        {
                            continue;
                        }
                    }
                    ToSend = StackTraceItem;
                    break;
                }
            }
            if (ToSend != null)
            {
                List <PascalABCCompiler.Errors.Error> list = new List <PascalABCCompiler.Errors.Error>();
                list.Add(new RuntimeException(
                             string.Format(
                                 Form1StringResources.Get("ERRORLIST_RUNTIME_EXCEPTION_MESSAGE{0}"),
                                 localiseMsg.Replace(Environment.NewLine, " ")),
                             ToSend.SourceFileName,
                             0,
                             ToSend.LineNumber)
                         );
                Workbench.ErrorsListWindow.ShowErrorsSync(list, true);
                if (RunnerManager.Count > 0)
                {
                    RunnerManager.KillAll();
                }
            }
        }
示例#10
0
        private void InitLogger()
        {
            this.logger        = new MyLogger();
            this.runnerManager = new RunnerManager(this.logger);

            // updating of log by timer
            this.outputUpdateTimmer          = new DispatcherTimer();
            this.outputUpdateTimmer.Tick    += (s, e) => this.UpdateOutput();
            this.outputUpdateTimmer.Interval = new TimeSpan(0, 0, 0, 0, 250);
            this.outputUpdateTimmer.Start();
        }
示例#11
0
        public RunnersForm(RunnerManager runnerManager, StateManager stateManager)
        {
            InitializeComponent();

            _runnerManager = runnerManager;
            _stateManager  = stateManager;
            SetRowsToDatagrid();
            PopulateDataGrid();
            InitCountrycmbx();
            InitSex();
            EditbuttonsAvailable(false);
        }
示例#12
0
        static void Main()
        {
            IStateRepository stateRepository = new StateRepository();
            StateManager     stateManager    = new StateManager(stateRepository);
            IFileRepository  fileRepository  = new FileRepository();
            RaceManager      raceManager     = new RaceManager(fileRepository);
            RunnerManager    runnerManager   = new RunnerManager(fileRepository);


            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm(runnerManager, stateManager, raceManager, fileRepository));
        }
示例#13
0
        static void Main(string[] args)
        {
            Console.WriteLine("PtilopsisCliServer 0.1");
            Console.WriteLine("2019-11-08");
            DBManager.Get().Start();

            RunnerManager.Get().Start();

            TaskManager.Get().Start();

            AppManager.Get().Start();

            EventManager.Get().Start();
        }
示例#14
0
        public MainForm(RunnerManager runnerManager, StateManager stateManager, RaceManager raceManager, IFileRepository fileRepository)
        {
            InitializeComponent();

            _runnerManager                = runnerManager;
            _raceManager                  = raceManager;
            _fileRepository               = fileRepository;
            _stateManager                 = stateManager;
            bttnRunnerAddLap.Enabled      = false;
            bttnRunnerSteppingOut.Enabled = false;
            SetRowsToDatagrid();
            SetRowsToDtGrdVwFinishedRunners();
            race = fileRepository.GetRace();
            form = new RunnersForm(_runnerManager, _stateManager);
        }
示例#15
0
    void Start()
    {
        Instance         = this;
        globals          = new Globals();
        globals.bones    = new Bones();
        globals.bones[0] = new Bone {
            point0 = 0, point1 = 1
        };                                                         //thigh 1
        globals.bones[1] = new Bone {
            point0 = 1, point1 = 2
        };                                                         //shin 1
        globals.bones[2] = new Bone {
            point0 = 0, point1 = 3
        };                                                         //thigh 2
        globals.bones[3] = new Bone {
            point0 = 3, point1 = 4
        };                                                         //shin 2
        globals.bones[4] = new Bone {
            point0 = 0, point1 = 5
        };                                                         //lower spine
        globals.bones[5] = new Bone {
            point0 = 5, point1 = 6
        };                                                         //upper spine
        globals.bones[6] = new Bone {
            point0 = 6, point1 = 7
        };                                                         //bicep 1
        globals.bones[7] = new Bone {
            point0 = 7, point1 = 8
        };                                                         //forearm 1
        globals.bones[8] = new Bone {
            point0 = 6, point1 = 9
        };                                                         //bicep 2
        globals.bones[9] = new Bone {
            point0 = 9, point1 = 10
        };                                                         //forearm 2
        globals.bones[10] = new Bone {
            point0 = 6, point1 = 11
        };                                                         //head
        globals.runSpeed  = 10f;
        globals.pitRadius = PitGenerator.pitRadius;

        random = new Unity.Mathematics.Random(0xBAD5EED);

        manager   = World.Active.GetOrCreateManager <EntityManager>();
        archetype = manager.CreateArchetype(typeof(Runner), typeof(BoneMatrices), typeof(BoneColor));
    }
示例#16
0
        public bool?KillTaskById(string id, int timeout = 10000)
        {
            var ptiEvent = EventManager.Get().RegEvent(ptievent => {
                return(RunnerManager.Get().TaskKillById(id));
            }, PtiEventType.Default);

            DateTime TimeOut = DateTime.Now.AddMilliseconds(timeout);

            while (DateTime.Now < TimeOut)
            {
                if (ptiEvent.IsExcuted)
                {
                    return(ptiEvent.EventResult as bool?);
                }
                Thread.Sleep(100);
            }
            return(null);
        }
示例#17
0
        public async Task TestSponsor()
        {
            var pluginPath     = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Plugins");
            var currentDir     = new DirectoryInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase);
            var rootPath       = currentDir.Parent.Parent.Parent;
            var lib1V1Path     = Path.Combine(rootPath.FullName, @"bin\MEFTestLib1.dll");
            var lib1PluginPath = Path.Combine(pluginPath, "MEFTestLib1.dll");

            // Copy lib1
            File.Copy(lib1V1Path, lib1PluginPath);

            var runner = RunnerManager.CreateRunner <Runner, IExport>("Plugins");

            var actual = runner.Exports.First().Value;

            Assert.AreEqual("MEFTestLib1.Import", actual.Name);

            await Task.Delay(new TimeSpan(0, 5, 10));

            actual = runner.Exports.First().Value;
            Assert.AreEqual("MEFTestLib1.Import", actual.Name);
        }
示例#18
0
        private void LoadFile()
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string strfilename = openFileDialog.InitialDirectory + openFileDialog.FileName;
                try
                {
                    _fileRepository.LoadDataFromFile(strfilename);
                    _runnerManager = new RunnerManager(_fileRepository);
                    _raceManager   = new RaceManager(_fileRepository);
                    race           = _fileRepository.GetRace();
                    form           = new RunnersForm(_runnerManager, _stateManager);
                    if (race.LengthOfLap != 0)
                    {
                        nmrcUpDwnLengthOfLap.Text     = race.LengthOfLap.ToString();
                        nmrcUpDwnNumberOfLaps.Text    = race.NumberOfLaps.ToString();
                        nmrcUpDwnNumberOfWinners.Text = race.NumberOfWinners.ToString();
                        SetBttnsAndTextAtStartRace();
                        lblRaceStartTime.Text = _runnerManager.GetDictionaryOFRunners().Values.ElementAt(0).GetFinishedLapsTimeList()[0].ToString();

                        foreach (var runner in _runnerManager.GetDictionaryOFRunners())
                        {
                            dtGrdVwMainRaceForm.Rows.Add(_runnerManager.KeyValueToString(runner.Key),
                                                         runner.Value.GetFinishedLapsTimeList().Last().ToString(), runner.Value.CountTimeTotal().ToString());
                        }
                        foreach (var runner in _runnerManager.GetDictionaryOFRunners())
                        {
                            _raceManager.IsFinishedRunnerAddedToWinningDirectory(race.NumberOfLaps, runner.Key, runner.Value);
                        }
                        PopulateDtGrdVwFinishedRunners();
                    }
                }
                catch (InvalidOperationException e)
                {
                    MessageBox.Show("Could not open the file " + e.Message);
                }
            }
        }
示例#19
0
    public void Awake()
    {
        /*This wont destroy main gamemanager on scene download, keeps track of level progress and stuff
         * When developing new level, comment this and uncomment manager = this; and InitialPanel(); line
         * When done developing level, remove Gamemanager from scene
         */

        if (manager == null)
        {
            manager = this;
            DontDestroyOnLoad(manager);

            currentState = GameState.Pause;
        }
        else if (manager != this && manager.gameObject.name != "GameManager")
        {
            Destroy(manager);
        }

        /*
         * manager = this;
         * InitialPanel();
         */
    }
示例#20
0
 public override void OnExit(RunnerManager _manager)
 {
     base.OnExit(_manager);
     Manager.animator.SetTrigger("Falling");
 }
示例#21
0
 public override void OnEnter(RunnerManager _manager)
 {
     base.OnEnter(_manager);
     Manager.animator.SetTrigger("Falling");
     Manager.isFalling = true;
 }
示例#22
0
        /// <summary>
        /// 循环遍历所有任务,检查可执行的并且执行
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public object CheckAllTasksEvent(PtiEventer value)
        {
            DateTime now = DateTime.Now;

            foreach (var runtask in this.TaskPool)
            {
                try
                {
                    //判断是否已经禁用任务,从内存中删除任务
                    if (!runtask.PtiTasker.Enable)
                    {
                        this.RemoveList.Add(runtask);
                        continue;
                    }

                    //判断任务运行是否已经超时
                    if (runtask.PtiTasker.TimeOutSeconds > 0)
                    {
                        if ((runtask.LastRunDate - now) >= TimeSpan.FromSeconds(runtask.PtiTasker.TimeOutSeconds))
                        {
                            if (!RunnerManager.Get().CheckTaskAndKill(runtask.PtiTasker))
                            {
                                WriteWarning($"Task {runtask.PtiTasker._id}({runtask.PtiTasker.TaskName}) Kill Failure!");
                            }
                        }
                    }

                    //判断启动时间启动任务
                    if (now >= runtask.NextRunDate)
                    {
                        if (!RunnerManager.Get().CreateAndStart(runtask))
                        {
                            WriteWarning($"Task {runtask.PtiTasker._id}({runtask.PtiTasker.TaskName}) Start Failure!");
                        }

                        //没有任务计划的为一次性任务,执行后标记为失效
                        if (string.IsNullOrWhiteSpace(runtask.PtiTasker.Schedule))
                        {
                            runtask.PtiTasker.Enable = false;
                        }
                        else
                        {
                            runtask.NextRunDate = Schedule.CalculateDateScheduleFromNow(runtask.PtiTasker.Schedule);
                        }
                    }
                }
                catch (Exception e)
                {
                    WriteError(e.ToString());
                }
            }
            foreach (var removetask in this.RemoveList)
            {
                //立即更新任务
                DBManager.Get().SaveTask(removetask.PtiTasker);
                //如果任务还在运行
                if (RunnerManager.Get().TaskExist(removetask.Runner))
                {
                    continue;
                }
                //在内存中移除任务
                if (!this.TaskPool.Remove(removetask))
                {
                    WriteWarning($"Task {removetask.PtiTasker._id}({removetask.PtiTasker.TaskName}) remove failure!");
                }
            }
            this.RemoveList = new List <PtiRunTask>();
            WriteInfo("Check All Tasks Success");
            return(true);
        }
示例#23
0
 public override void OnExit(RunnerManager _manager)
 {
     base.OnExit(_manager);
     Manager.animator.SetBool("Idle", false);
 }
示例#24
0
 void Awake()
 {
     gameManager = FindObjectOfType <RunnerManager>();
     gameManager.GameStarted.AddListener(OnGameStarted);
     gameManager.GameEnded.AddListener(OnGameEnded);
 }
示例#25
0
 public virtual void OnExit(RunnerManager _manager)
 {
     this.manager = _manager;
 }
示例#26
0
 public void TearDown()
 {
     RunnerManager.RemoveRunner("Plugins");
 }
示例#27
0
 private void Awake()
 {
     manager    = FindObjectOfType <RunnerManager>();
     genManager = FindObjectOfType <GeneratorManager>();
 }
示例#28
0
 public override void OnEnter(RunnerManager _manager)
 {
     base.OnEnter(_manager);
     Manager.animator.SetBool("Run", true);
 }
示例#29
0
 public override void OnExit(RunnerManager _manager)
 {
     base.OnExit(_manager);
     Manager.animator.SetBool("Run", false);
     Manager.animator.SetLayerWeight(1, 0f);
 }
示例#30
0
        static void Main(string[] args)
        {
            Console.WriteLine("Ptilopsis 0.1");
            Console.WriteLine("2019-10-21");
            var dbManager = DBManager.Get();

            var runnerManager = RunnerManager.Get();

            var taskManager = TaskManager.Get();

            var appManager = AppManager.Get();

            var eventManager = EventManager.Get();

            dbManager.Start();
            runnerManager.Start();
            taskManager.Start();
            appManager.Start();
            eventManager.Start();

            #region 任务计划计算测试
            //DateSchedule sch = new DateSchedule();
            //Console.WriteLine(sch.CalculateDateScheduleFromNow("*,*,*,1,0"));
            //Console.WriteLine(sch.CalculateDateScheduleFromNow("*,*,5,1,0"));
            #endregion

            #region App解压测试
            PtiApp app = new PtiApp()
            {
                Name          = "Hello Ptilopsis",
                ZipFile       = "main.zip",
                DefaultRunCmd = "node"
            };
            app.Id = MD5Helper.getMd5Hash(app.Name);
            appManager.AddApp(app);

            //PtiApp app2 = new PtiApp()
            //{
            //    Name = "EchoTest",
            //    DefaultRunCmd = "echo"
            //};
            //app2.Id = MD5Helper.getMd5Hash(app.Name);
            //appManager.AddApp(app2);
            foreach (var item in dbManager.GetAllApps())
            {
                Console.WriteLine(item.Name);
            }
            #endregion

            #region TASK测试
            //PtiTasker task = new PtiTasker()
            //{
            //    ApplicationId=app.Id,
            //    RunArgs="main.py",
            //    TaskName= "Hello Ptilopsis",
            //    _id=Guid.NewGuid().ToString("N")
            //};
            PtiTasker task = new PtiTasker()
            {
                ApplicationId = app.Id,
                RunArgs       = "main.js",
                TaskName      = "testNode",
                _id           = Guid.NewGuid().ToString("N")
            };
            var _t = taskManager.AddTask(task);
            //while (!_t.IsExcuted)
            //{
            //    Thread.Sleep(100);
            //}
            //Console.WriteLine(_t.EventResult);
            while (true)
            {
                Thread.Sleep(100);
            }
            #endregion
            //#if DEBUG
            //            PtiTester tester = new PtiTester();
            //            PtiApp app = new PtiApp();//APP 项目目录
            //            PtiTask task = new PtiTask();
            //            task.RunPath = "D:\\RunPath";
            //            task.RunCmd = "python";
            //            task.RunArgs = "main.py";
            //            PtiRunner runner = new PtiRunner(task, app);
            //            tester.TestRunner(runner);
            //#endif
            //            Console.WriteLine("Hello World!");
        }