package Ġorg . me ch d ancer . data flow . core . internal Ċ Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . I Block Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IL ink Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Scheduled ThreadPoolExecutor Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ import Ġjava . util . concurrent . locks . Lock Ċ Ċ internal Ġval Ġscheduler Ġ= ĠScheduled ThreadPoolExecutor ( 0 ) Ċ Ċ internal Ġfun ĠI Block . view () Ġ= Ġ"$ name (${ this :: class . simple Name })" Ċ Ċ internal Ġval Ġ< T > ĠLink Manager < T >. targets Ġget () Ġ= Ġset . map ( IL ink < T >:: target ). toSet () Ċ Ċ internal Ġfun ĠLock . with Try Lock ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġif Ġ( try Lock ()) Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġunlock () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠAtomicInteger . increase If ( block : Ġ( Int ) Ġ-> ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠ Ġupdate AndGet Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġblock ( it ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġit Ġ+ Ġ 1 Ġelse Ġit ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ internal Ġfun ĠAtomic Long . increase If ( block : Ġ( Long ) Ġ-> ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠ Ġupdate AndGet Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġblock ( it ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġit Ġ+ Ġ 1 Ġelse Ġit ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ