package Ġcom . sw iss chain . matching . engine . common . impl Ċ Ċ import Ġcom . sw iss chain . matching . engine . common . Queue Consumer Ċ import Ġcom . sw iss chain . matching . engine . common . Simple Application Event Publisher Ċ import Ġjava . util . Optional Ċ import Ġjava . util . concurrent . BlockingQueue Ċ Ċ class ĠApplication Event Publisher Impl < T >( private Ġval Ġqueue : ĠBlock ing Queue < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue Consum ers : ĠOptional < List < Queue Consumer < T >? >> ): ĠSimple Application Event Publisher < T > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlisteners : ĠList < Queue Consumer < T >> Ġ= Ġqueue Consum ers . orElse Get { Ġempty List () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit !! Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpublish Event ( event : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( listeners . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġqueue . put ( event ) ĊĠĠĠ Ġ} Ċ }