示例#1
0
        private static void Scheduler_OnIntentDueCallback(IntentJob intentJob)
        {
            if (intentJob.RequiresIteration)
            {
                try
                {
                    var compilerResults = Intent.IntentCompiler.CompileCSharpString(File.ReadAllText(intentJob.FileName));

                    var tempType = compilerResults.CompiledAssembly.GetType("ShiftPolicy");

                    List <Topology.Node.Node> iterateNodes = (List <Topology.Node.Node>)tempType.GetMethod("IterateNodes").Invoke(null, new object[] { igp_topology });

                    foreach (var node in iterateNodes)
                    {
                        var iJob = new IntentJob(
                            fileName: intentJob.FileName,
                            intentCode: IntentJob.Base64Decode(intentJob.Base64IntentCode),
                            period: intentJob.Period,
                            validBefore: intentJob.ValidBefore,
                            requiresIteration: intentJob.RequiresIteration,
                            iterateNode: node
                            );

                        IntentQueueProducer.Publish(JsonConvert.SerializeObject(iJob));
                        IntentJobTasksCount.Inc();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            else
            {
                IntentQueueProducer.Publish(JsonConvert.SerializeObject(intentJob));
                IntentJobTasksCount.Inc();
            }
        }