src/Pure/System/session.scala
changeset 39696 f4da0428dc78
parent 39633 26a28110ece5
child 39698 625a3bc4417b
equal deleted inserted replaced
39695:1906c0c77341 39696:f4da0428dc78
    22   case object Assignment
    22   case object Assignment
    23   case class Commands_Changed(set: Set[Command])
    23   case class Commands_Changed(set: Set[Command])
    24 
    24 
    25   sealed abstract class Phase
    25   sealed abstract class Phase
    26   case object Inactive extends Phase
    26   case object Inactive extends Phase
    27   case object Exit extends Phase
    27   case object Startup extends Phase
    28   case object Ready extends Phase
    28   case object Ready extends Phase
    29   case object Shutdown extends Phase
    29   case object Shutdown extends Phase
    30 }
    30 }
    31 
    31 
    32 
    32 
   207           catch { case _: Document.State.Fail => bad_result(result) }
   207           catch { case _: Document.State.Fail => bad_result(result) }
   208         case _ =>
   208         case _ =>
   209           if (result.is_syslog) {
   209           if (result.is_syslog) {
   210             reverse_syslog ::= result.message
   210             reverse_syslog ::= result.message
   211             if (result.is_ready) phase = Session.Ready
   211             if (result.is_ready) phase = Session.Ready
   212             else if (result.is_exit) {
   212             else if (result.is_exit) phase = Session.Inactive
   213               phase = Session.Exit
       
   214               phase = Session.Inactive
       
   215             }
       
   216           }
   213           }
   217           else if (result.is_stdout) { }
   214           else if (result.is_stdout) { }
   218           else if (result.is_status) {
   215           else if (result.is_status) {
   219             result.body match {
   216             result.body match {
   220               case List(Isar_Document.Assign(id, edits)) =>
   217               case List(Isar_Document.Assign(id, edits)) =>
   258         case change: Document.Change if prover != null => handle_change(change)
   255         case change: Document.Change if prover != null => handle_change(change)
   259 
   256 
   260         case result: Isabelle_Process.Result => handle_result(result)
   257         case result: Isabelle_Process.Result => handle_result(result)
   261 
   258 
   262         case Start(timeout, args) if prover == null =>
   259         case Start(timeout, args) if prover == null =>
       
   260           phase = Session.Startup
   263           prover = new Isabelle_Process(system, timeout, self, args:_*) with Isar_Document
   261           prover = new Isabelle_Process(system, timeout, self, args:_*) with Isar_Document
   264 
   262 
   265         case Stop if phase == Session.Ready =>
   263         case Stop if phase == Session.Ready =>
   266           global_state.change(_ => Document.State.init)  // FIXME event bus!?
   264           global_state.change(_ => Document.State.init)  // FIXME event bus!?
   267           phase = Session.Shutdown
   265           phase = Session.Shutdown