/** Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠM ic hel ĠK re mer Ġ( k rem i 1 5 1 ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġlu . k rem i 1 5 1 . chat ster . core . threading Ċ Ċ import Ġjava . util . HashSet Ċ import Ġjava . util . Optional Ċ Ċ class ĠRunning Profiles State Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrunning Profiles Ġ= ĠHashSet < Profile Thread >() ĊĠĠĠ Ġprivate Ġval Ġrunning Profile Ids Ġ= ĠHashSet < String >() ĊĊĠĠĠ Ġval Ġcopy Of Running Profiles : ĠSet < Profile Thread > ĊĠĠĠĠĠĠĠ Ġ@ Synchron ized Ġget () Ġ= ĠHashSet ( running Profiles ) ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġrunning Profiles . clear () ĊĠĠĠĠĠĠĠ Ġrunning Profile Ids . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrunning Profiles . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġfind Profile Thread ( profile Id : ĠString ): ĠOptional < Profile Thread > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrunning Profiles . stream (). filter Ġ{ Ġthread Ġ-> Ġthread . profile . id Ġ== Ġprofile Id Ġ}. findFirst () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġadd ( profile : ĠProfile Thread ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( running Profile Ids . contains ( profile . profile . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrunning Profiles . add ( profile ) ĊĠĠĠĠĠĠĠ Ġrunning Profile Ids . add ( profile . profile . id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġremove ( profile : ĠProfile Thread ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrunning Profiles . remove ( profile ) ĊĠĠĠĠĠĠĠ Ġrunning Profile Ids . remove ( profile . profile . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġis Profile Running ( id : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrunning Profile Ids . contains ( id ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ