src/Pure/Thy/export.scala
changeset 71939 107472ccc60d
parent 71726 a5fda30edae2
child 71963 3e7d89d9912e
equal deleted inserted replaced
71938:e1b262e7480c 71939:107472ccc60d
   141     val regex = make_regex(pattern)
   141     val regex = make_regex(pattern)
   142     (theory_name: String, name: String) =>
   142     (theory_name: String, name: String) =>
   143       regex.pattern.matcher(compound_name(theory_name, name)).matches
   143       regex.pattern.matcher(compound_name(theory_name, name)).matches
   144   }
   144   }
   145 
   145 
       
   146   private lazy val later: Consumer_Thread[() => Unit] =
       
   147     Consumer_Thread.fork(name = "Export.later", daemon = true)(
       
   148       consume = (run: () => Unit) => { run(); true })
       
   149 
   146   def make_entry(session_name: String, args: Protocol.Export.Args, body: Bytes,
   150   def make_entry(session_name: String, args: Protocol.Export.Args, body: Bytes,
   147     cache: XZ.Cache = XZ.cache()): Entry =
   151     cache: XZ.Cache = XZ.cache()): Entry =
   148   {
   152   {
   149     Entry(session_name, args.theory_name, args.name, args.executable,
   153     Entry(session_name, args.theory_name, args.name, args.executable,
   150       if (args.compress) Future.fork(body.maybe_compress(cache = cache))
   154       if (args.compress) {
       
   155         val result = Future.promise[(Boolean, Bytes)]
       
   156         later.send(() => result.fulfill(body.maybe_compress(cache = cache)))
       
   157         result
       
   158       }
   151       else Future.value((false, body)))
   159       else Future.value((false, body)))
   152   }
   160   }
   153 
   161 
   154   def read_entry(db: SQL.Database, session_name: String, theory_name: String, name: String)
   162   def read_entry(db: SQL.Database, session_name: String, theory_name: String, name: String)
   155     : Option[Entry] =
   163     : Option[Entry] =