package Ġk hal a . internal . zmq . client ĊĊ Ċ internal Ġactual Ġclass ĠClient Loop < L , ĠS > Ġactual Ġconstructor ( ĊĠĠĠ Ġloop State Producer : Ġ() Ġ-> ĠL , ĊĠĠĠ Ġsocket State Producer : Ġ( L ) Ġ-> ĠS , ĊĠĠĠ Ġforward Listener : ĠForward Listener < L , ĠS > Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġloop Scope Ġ= ĠClient Loop Scope ( ĊĠĠĠĠĠĠĠ Ġforward Sockets Ġ= ĠLinkedHashMap (), ĊĠĠĠĠĠĠĠ Ġforward Listener Ġ= Ġforward Listener , ĊĠĠĠĠĠĠĠ Ġsocket State Producer Ġ= Ġsocket State Producer , ĊĠĠĠĠĠĠĠ Ġloop State Ġ= Ġloop State Producer (), ĊĠĠĠĠĠĠĠ Ġis Stopped Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġactual Ġfun Ġinvoke Safe ( block : ĠClient Loop Scope < L , ĠS >. ( L ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġloop Scope . run Ġ{ Ġblock ( loop State ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġstop Safe () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( loop Scope ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Stopped Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforward Sockets . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . socket . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }