src/Pure/General/event_bus.scala
changeset 29190 89217ccfd130
child 29191 de56edf88514
equal deleted inserted replaced
29188:ff41885a1234 29190:89217ccfd130
       
     1 /*  Title:      Pure/General/event_bus.scala
       
     2     Author:     Makarius
       
     3 
       
     4 Generic event bus.
       
     5 */
       
     6 
       
     7 package isabelle
       
     8 
       
     9 import scala.collection.jcl.LinkedList
       
    10 
       
    11 
       
    12 class EventBus[Event] {
       
    13   type Handler = Event => Unit
       
    14   private val handlers = new LinkedList[Handler]
       
    15 
       
    16   def += (h: Handler) = synchronized { handlers -= h; handlers += h }
       
    17   def -= (h: Handler) = synchronized { handlers -= h }
       
    18 
       
    19   def event(e: Event) = synchronized { for(h <- handlers) h(e) }
       
    20 }