package Ġb aa ah s . fixtures Ċ Ċ import Ġb aa ah s . Pub Sub Ċ import Ġb aa ah s . controller . Controller Id Ċ import Ġb aa ah s . plugin . Plugins Ċ import Ġb aa ah s . sm . web api . Topics Ċ import Ġkotlinx . serialization . Serializable Ċ Ċ class ĠFix ture Publisher ( ĊĠĠĠ Ġpub Sub : ĠPub Sub . Server , ĊĠĠĠ Ġplugins : ĠPlugins Ċ ) Ġ: ĠFix ture Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfixtures Channel Ġ= Ġpub Sub . open Channel ( Topics . create Fixtures ( plugins ), Ġempty List ()) Ġ{} ĊĠĠĠ Ġprivate Ġval Ġfixtures Ġ= Ġmutable Map Of < Fixture , ĠFix ture Info >() ĊĊĠĠĠ Ġoverride Ġfun Ġfixtures Changed ( added Fixtures : ĠCollection < Fixture >, Ġremoved Fixtures : ĠCollection < Fixture >) Ġ{ ĊĠĠĠĠĠĠĠ Ġremoved Fixtures . forEach Ġ{ Ġfixtures . remove ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġadded Fixtures . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixtures [ it ] Ġ= ĠFix ture Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . model Entity ?. name , Ġ// ĠTODO : Ġname Ġvs Ġid ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transport . controller . controller Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transport . config ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfixtures Channel . onChange ( fixtures . values . toList ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠFix ture Info ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġentity Id : ĠString ?, ĊĠĠĠ Ġval Ġcontroller Id : ĠController Id , ĊĠĠĠ Ġval Ġtransport Config : ĠTransport Config ? Ċ )