equal
deleted
inserted
replaced
18 |
18 |
19 val start_time: Time = Time.now() |
19 val start_time: Time = Time.now() |
20 private var stop_time: Option[Time] = None |
20 private var stop_time: Option[Time] = None |
21 def stop_now(): Unit = synchronized { stop_time = Some(Time.now()) } |
21 def stop_now(): Unit = synchronized { stop_time = Some(Time.now()) } |
22 |
22 |
23 def output(): (Command.Results, XML.Body) = synchronized { |
23 def output(): (Command.Results, XML.Elem) = synchronized { |
24 val output_text = output_buffer.toString |
24 val output_text = output_buffer.toString |
25 val elapsed_time = stop_time.map(t => t - start_time) |
25 val elapsed_time = stop_time.map(t => t - start_time) |
26 |
26 |
27 val message_prefix = heading + " " |
27 val message_prefix = heading + " " |
28 val message_suffix = |
28 val message_suffix = |
43 List(XML.Elem(Markup(Markup.WRITELN, Markup.Serial(i)), XML.string(title))) ::: |
43 List(XML.Elem(Markup(Markup.WRITELN, Markup.Serial(i)), XML.string(title))) ::: |
44 XML.string(message_suffix) |
44 XML.string(message_suffix) |
45 (results, message) |
45 (results, message) |
46 } |
46 } |
47 |
47 |
48 (results, List(XML.elem(Markup.TRACING_MESSAGE, message))) |
48 (results, XML.elem(Markup.TRACING_MESSAGE, message)) |
49 } |
49 } |
50 } |
50 } |
51 } |
51 } |
52 |
52 |
53 abstract class Program_Progress( |
53 abstract class Program_Progress( |
56 override val verbose: Boolean = false |
56 override val verbose: Boolean = false |
57 ) extends Progress { |
57 ) extends Progress { |
58 private var _finished_programs: List[Program_Progress.Program] = Nil |
58 private var _finished_programs: List[Program_Progress.Program] = Nil |
59 private var _running_program: Option[Program_Progress.Program] = None |
59 private var _running_program: Option[Program_Progress.Program] = None |
60 |
60 |
61 def output(): (Command.Results, XML.Body) = synchronized { |
61 def output(): (Command.Results, List[XML.Elem]) = synchronized { |
62 val programs = (_running_program.toList ::: _finished_programs).reverse |
62 val programs = (_running_program.toList ::: _finished_programs).reverse |
63 val programs_output = programs.map(_.output()) |
63 val programs_output = programs.map(_.output()) |
64 val results = Command.Results.merge(programs_output.map(_._1)) |
64 val results = Command.Results.merge(programs_output.map(_._1)) |
65 val body = Library.separate(Pretty.Separator, programs_output.map(_._2)).flatten |
65 (results, programs_output.map(_._2)) |
66 (results, body) |
|
67 } |
66 } |
68 |
67 |
69 private def start_program(heading: String, title: String): Unit = synchronized { |
68 private def start_program(heading: String, title: String): Unit = synchronized { |
70 _running_program = Some(new Program_Progress.Program(heading, title)) |
69 _running_program = Some(new Program_Progress.Program(heading, title)) |
71 } |
70 } |