src/Pure/Concurrent/event_timer.scala
changeset 75393 87ebf5a50283
parent 73367 77ef8bef0593
equal deleted inserted replaced
75388:b3ca4a6ed74b 75393:87ebf5a50283
    11 
    11 
    12 
    12 
    13 import java.util.{Timer, TimerTask, Date => JDate}
    13 import java.util.{Timer, TimerTask, Date => JDate}
    14 
    14 
    15 
    15 
    16 object Event_Timer
    16 object Event_Timer {
    17 {
       
    18   private lazy val event_timer = new Timer("event_timer", true)
    17   private lazy val event_timer = new Timer("event_timer", true)
    19 
    18 
    20   final class Request private[Event_Timer](val time: Time, val repeat: Option[Time], task: TimerTask)
    19   final class Request private[Event_Timer](
    21   {
    20     val time: Time,
       
    21     val repeat: Option[Time],
       
    22     task: TimerTask
       
    23   ) {
    22     def cancel(): Boolean = task.cancel()
    24     def cancel(): Boolean = task.cancel()
    23   }
    25   }
    24 
    26 
    25   def request(time: Time, repeat: Option[Time] = None)(event: => Unit): Request =
    27   def request(time: Time, repeat: Option[Time] = None)(event: => Unit): Request = {
    26   {
       
    27     val task = new TimerTask { def run: Unit = event }
    28     val task = new TimerTask { def run: Unit = event }
    28     repeat match {
    29     repeat match {
    29       case None => event_timer.schedule(task, new JDate(time.ms))
    30       case None => event_timer.schedule(task, new JDate(time.ms))
    30       case Some(rep) => event_timer.schedule(task, new JDate(time.ms), rep.ms)
    31       case Some(rep) => event_timer.schedule(task, new JDate(time.ms), rep.ms)
    31     }
    32     }