package Ġio . jav al in . locations Ċ Ċ import Ġio . jav al in . J aval in Ċ import Ġio . jav al in . websocket .* Ċ import Ġkotlin . reflect . K Class Ċ Ċ type alias ĠW s Location Handler < C , ĠT > Ġ= ĠT .( C ) Ġ-> ĠUnit Ċ Ċ class ĠW s Location Config < T Ġ: ĠAny > Ġ@ Published Api Ġinternal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġlocation : ĠK Class < T >, ĊĠĠĠ Ġprivate Ġval Ġws Config : ĠW s Config Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġon Connect ( handler : ĠW s Location Handler < Ws Connect Context , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġws Config . on Connect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhy dr ated Ġ= Ġit . hyd rate ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( hy dr ated , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Message ( handler : ĠW s Location Handler < Ws Message Context , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġws Config . on Message Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhy dr ated Ġ= Ġit . hyd rate ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( hy dr ated , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Binary Message ( handler : ĠW s Location Handler < Ws Binary Message Context , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġws Config . on Binary Message Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhy dr ated Ġ= Ġit . hyd rate ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( hy dr ated , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClose ( handler : ĠW s Location Handler < Ws Close Context , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġws Config . onClose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhy dr ated Ġ= Ġit . hyd rate ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( hy dr ated , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonError ( handler : ĠW s Location Handler < Ws Error Context , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġws Config . onError Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhy dr ated Ġ= Ġit . hyd rate ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( hy dr ated , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠJ aval in . ws ( no inline Ġconfig : Ġ( Ws Location Config < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġlocation Path Ġ= ĠLocation Builder . location Path ( T :: class ) ĊĠĠĠ Ġws ( location Path ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig . invoke ( Ws Location Config ( T :: class , Ġit )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠI Location Builder . ws ( no inline Ġconfig : Ġ( Ws Location Config < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġextended Builder Ġ= Ġthis Ġas ĠLocation Builder ĊĠĠĠ Ġval Ġlocation Path Ġ= ĠLocation Builder . normalize ( extended Builder . path , ĠLocation Builder . location Path ( T :: class )) ĊĊĠĠĠ Ġextended Builder . jav al in . ws ( location Path ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig . invoke ( Ws Location Config ( T :: class , Ġit )) ĊĠĠĠ Ġ} Ċ }