equal
deleted
inserted
replaced
138 manager.send(Clear_Memory) |
138 manager.send(Clear_Memory) |
139 |
139 |
140 def send_reply(session: Session, serial: Long, answer: Answer) = |
140 def send_reply(session: Session, serial: Long, answer: Answer) = |
141 manager.send(Reply(session, serial, answer)) |
141 manager.send(Reply(session, serial, answer)) |
142 |
142 |
143 private lazy val manager: Consumer_Thread[Any] = |
143 def make_manager: Consumer_Thread[Any] = |
144 { |
144 { |
145 var contexts = Map.empty[Document_ID.Command, Context] |
145 var contexts = Map.empty[Document_ID.Command, Context] |
146 |
146 |
147 var memory_children = Map.empty[Long, Set[Long]] |
147 var memory_children = Map.empty[Long, Set[Long]] |
148 var memory = Map.empty[Index, Answer] |
148 var memory = Map.empty[Index, Answer] |
281 }, |
281 }, |
282 finish = () => contexts = Map.empty |
282 finish = () => contexts = Map.empty |
283 ) |
283 ) |
284 } |
284 } |
285 |
285 |
|
286 private val manager_variable = Synchronized[Option[Consumer_Thread[Any]]](None) |
|
287 |
|
288 def manager: Consumer_Thread[Any] = |
|
289 manager_variable.value match { |
|
290 case Some(thread) if thread.is_active => thread |
|
291 case _ => error("Bad Simplifier_Trace.manager thread") |
|
292 } |
|
293 |
286 |
294 |
287 /* protocol handler */ |
295 /* protocol handler */ |
288 |
296 |
289 class Handler extends Session.Protocol_Handler |
297 class Handler extends Session.Protocol_Handler |
290 { |
298 { |
291 assert(manager.is_active) |
299 try { manager } |
|
300 catch { case ERROR(_) => manager_variable.change(_ => Some(make_manager)) } |
292 |
301 |
293 override def exit() = |
302 override def exit() = |
294 { |
303 { |
295 manager.send(Clear_Memory) |
304 manager.send(Clear_Memory) |
296 manager.shutdown() |
305 manager.shutdown() |
|
306 manager_variable.change(_ => None) |
297 } |
307 } |
298 |
308 |
299 private def cancel(msg: Prover.Protocol_Output): Boolean = |
309 private def cancel(msg: Prover.Protocol_Output): Boolean = |
300 msg.properties match { |
310 msg.properties match { |
301 case Markup.Simp_Trace_Cancel(serial) => |
311 case Markup.Simp_Trace_Cancel(serial) => |