src/Pure/System/session.scala
changeset 45709 87017fcbad83
parent 45672 a497c5d4a523
child 46120 f7ee2e5a83dd
equal deleted inserted replaced
45708:7c8bed80301f 45709:87017fcbad83
   209       timer.schedule(new TimerTask { def run = flush }, message_delay.ms, message_delay.ms)
   209       timer.schedule(new TimerTask { def run = flush }, message_delay.ms, message_delay.ms)
   210 
   210 
   211       def cancel() { timer.cancel() }
   211       def cancel() { timer.cancel() }
   212     }
   212     }
   213 
   213 
   214     var prover: Option[Isabelle_Process with Isabelle_Document] = None
   214     var prover: Option[Isabelle_Process with Protocol] = None
   215 
   215 
   216 
   216 
   217     /* delayed command changes */
   217     /* delayed command changes */
   218 
   218 
   219     object commands_changed_delay
   219     object commands_changed_delay
   363           catch {
   363           catch {
   364             case _: Document.State.Fail => bad_result(result)
   364             case _: Document.State.Fail => bad_result(result)
   365           }
   365           }
   366         case Isabelle_Markup.Assign_Execs if result.is_raw =>
   366         case Isabelle_Markup.Assign_Execs if result.is_raw =>
   367           XML.content(result.body).mkString match {
   367           XML.content(result.body).mkString match {
   368             case Isabelle_Document.Assign(id, assign) =>
   368             case Protocol.Assign(id, assign) =>
   369               try { handle_assign(id, assign) }
   369               try { handle_assign(id, assign) }
   370               catch { case _: Document.State.Fail => bad_result(result) }
   370               catch { case _: Document.State.Fail => bad_result(result) }
   371             case _ => bad_result(result)
   371             case _ => bad_result(result)
   372           }
   372           }
   373           // FIXME separate timeout event/message!?
   373           // FIXME separate timeout event/message!?
   376             if (!old_versions.isEmpty) prover.get.remove_versions(old_versions)
   376             if (!old_versions.isEmpty) prover.get.remove_versions(old_versions)
   377             prune_next = System.currentTimeMillis() + prune_delay.ms
   377             prune_next = System.currentTimeMillis() + prune_delay.ms
   378           }
   378           }
   379         case Isabelle_Markup.Removed_Versions if result.is_raw =>
   379         case Isabelle_Markup.Removed_Versions if result.is_raw =>
   380           XML.content(result.body).mkString match {
   380           XML.content(result.body).mkString match {
   381             case Isabelle_Document.Removed(removed) =>
   381             case Protocol.Removed(removed) =>
   382               try { handle_removed(removed) }
   382               try { handle_removed(removed) }
   383               catch { case _: Document.State.Fail => bad_result(result) }
   383               catch { case _: Document.State.Fail => bad_result(result) }
   384             case _ => bad_result(result)
   384             case _ => bad_result(result)
   385           }
   385           }
   386         case Isabelle_Markup.Invoke_Scala(name, id) if result.is_raw =>
   386         case Isabelle_Markup.Invoke_Scala(name, id) if result.is_raw =>
   427         case TIMEOUT => commands_changed_delay.flush()
   427         case TIMEOUT => commands_changed_delay.flush()
   428 
   428 
   429         case Start(timeout, args) if prover.isEmpty =>
   429         case Start(timeout, args) if prover.isEmpty =>
   430           if (phase == Session.Inactive || phase == Session.Failed) {
   430           if (phase == Session.Inactive || phase == Session.Failed) {
   431             phase = Session.Startup
   431             phase = Session.Startup
   432             prover =
   432             prover = Some(new Isabelle_Process(timeout, receiver.invoke _, args) with Protocol)
   433               Some(new Isabelle_Process(timeout, receiver.invoke _, args) with Isabelle_Document)
       
   434           }
   433           }
   435 
   434 
   436         case Stop =>
   435         case Stop =>
   437           if (phase == Session.Ready) {
   436           if (phase == Session.Ready) {
   438             global_state.change(_ => Document.State.init)  // FIXME event bus!?
   437             global_state.change(_ => Document.State.init)  // FIXME event bus!?