Ejemplo n.º 1
0
        public static Task[] Schedule <TTask>(Source source, bool startNow) where TTask : TaskRunBlockchain, new()
        {
            using (var connection = new MySqlConnection(OTHubSettings.Instance.MariaDB.ConnectionString))
            {
                var blockchains = connection.Query(@"SELECT * FROM blockchains WHERE enabled = 1").ToArray();

                List <Task> tasks = new List <Task>();

                foreach (var blockchain in blockchains)
                {
                    TTask task = new TTask();

                    int    id             = blockchain.ID;
                    string blockchainName = blockchain.BlockchainName;
                    string networkName    = blockchain.NetworkName;

                    Logger.WriteLine(Source.BlockchainSync,
                                     $"Setting up processes for {blockchainName} {networkName}. Task is " + task.Name);

                    BlockchainType    blockchainEnum  = Enum.Parse <BlockchainType>(blockchainName);
                    BlockchainNetwork networkNameEnum = Enum.Parse <BlockchainNetwork>(networkName);

                    TimeSpan interval = task.GetExecutingInterval(blockchainEnum);

                    tasks.Add(Task.Run(async() =>
                    {
                        TaskController controller = new TaskController(source);
                        var item = new TaskControllerItem(blockchainEnum, networkNameEnum, controller._source, task, interval, startNow, id);
                        controller._items.Add(item);

                        await controller.Start();
                    }));
                }

                return(tasks.ToArray());
            }
        }
Ejemplo n.º 2
0
        public void Schedule(TaskRunGeneric task, TimeSpan runEveryTimeSpan, bool startNow)
        {
            var item = new TaskControllerItem(_source, task, runEveryTimeSpan, startNow);

            _items.Add(item);
        }