/// trace for seeing runtime status of collider module tagion.tools.collider.trace; import std.range : repeat; import std.stdio; import tagion.tools.collider.schedule : Runner; import tagion.utils.Term; @safe interface ScheduleTrace { void started(const ref Runner runner); void stopped(const ref Runner runner); void timeout(const ref Runner runner); void initTrace(const long number_of_runners); } @safe class TraceCallBacks : ScheduleTrace { long number_of_runners; void initTrace(const long number_of_runners) { this.number_of_runners = number_of_runners; CLEARSCREEN.write; foreach (i; 0 .. this.number_of_runners) { writefln("Runner %s idle", i); } } void goToLine(const size_t line_number) { HOME.write; NEXTLINE.repeat(line_number).write; CLEARLINE.write; } void started(const ref Runner runner) { writefln("Runner %s started %s", runner.jobid, runner.name); } void stopped(const ref Runner runner) { writefln("Runner %s stopped %s", runner.jobid, runner.name); } void timeout(const ref Runner runner) { writefln("Runner %s timeout %s", runner.jobid, runner.name); } }