11 import scala.util.matching.Regex |
11 import scala.util.matching.Regex |
12 |
12 |
13 |
13 |
14 trait Build_Job { |
14 trait Build_Job { |
15 def job_name: String |
15 def job_name: String |
16 def node_info: Build_Job.Node_Info |
16 def node_info: Host.Node_Info |
17 def terminate(): Unit = () |
17 def terminate(): Unit = () |
18 def is_finished: Boolean = false |
18 def is_finished: Boolean = false |
19 def finish: (Process_Result, SHA1.Shasum) = (Process_Result.undefined, SHA1.no_shasum) |
19 def finish: (Process_Result, SHA1.Shasum) = (Process_Result.undefined, SHA1.no_shasum) |
20 def make_abstract: Build_Job.Abstract = Build_Job.Abstract(job_name, node_info) |
20 def make_abstract: Build_Job.Abstract = Build_Job.Abstract(job_name, node_info) |
21 } |
21 } |
22 |
22 |
23 object Build_Job { |
23 object Build_Job { |
24 object Node_Info { def none: Node_Info = Node_Info("", None) } |
24 sealed case class Result(node_info: Host.Node_Info, process_result: Process_Result) { |
25 sealed case class Node_Info(hostname: String, numa_node: Option[Int]) |
|
26 |
|
27 sealed case class Result(node_info: Node_Info, process_result: Process_Result) { |
|
28 def ok: Boolean = process_result.ok |
25 def ok: Boolean = process_result.ok |
29 } |
26 } |
30 |
27 |
31 sealed case class Abstract( |
28 sealed case class Abstract( |
32 override val job_name: String, |
29 override val job_name: String, |
33 override val node_info: Node_Info |
30 override val node_info: Host.Node_Info |
34 ) extends Build_Job { |
31 ) extends Build_Job { |
35 override def make_abstract: Abstract = this |
32 override def make_abstract: Abstract = this |
36 } |
33 } |
37 |
34 |
38 |
35 |
42 |
39 |
43 def start_session( |
40 def start_session( |
44 build_context: Build_Process.Context, |
41 build_context: Build_Process.Context, |
45 session_background: Sessions.Background, |
42 session_background: Sessions.Background, |
46 input_shasum: SHA1.Shasum, |
43 input_shasum: SHA1.Shasum, |
47 node_info: Node_Info |
44 node_info: Host.Node_Info |
48 ): Session_Job = new Session_Job(build_context, session_background, input_shasum, node_info) |
45 ): Session_Job = new Session_Job(build_context, session_background, input_shasum, node_info) |
49 |
46 |
50 object Session_Context { |
47 object Session_Context { |
51 def load( |
48 def load( |
52 name: String, |
49 name: String, |
103 |
100 |
104 class Session_Job private[Build_Job]( |
101 class Session_Job private[Build_Job]( |
105 build_context: Build_Process.Context, |
102 build_context: Build_Process.Context, |
106 session_background: Sessions.Background, |
103 session_background: Sessions.Background, |
107 input_shasum: SHA1.Shasum, |
104 input_shasum: SHA1.Shasum, |
108 override val node_info: Node_Info |
105 override val node_info: Host.Node_Info |
109 ) extends Build_Job { |
106 ) extends Build_Job { |
110 private val store = build_context.store |
107 private val store = build_context.store |
111 private val progress = build_context.progress |
108 private val progress = build_context.progress |
112 private val verbose = build_context.verbose |
109 private val verbose = build_context.verbose |
113 |
110 |