package Ġorg . h ild an . k ross bow . st omp . instrumentation Ċ Ċ import Ġorg . h ild an . k ross bow . st omp . frame . Sto mp Frame Ċ import Ġorg . h ild an . k ross bow . websocket . WebSocket Frame Ċ Ċ /** Ċ Ġ* ĠAn Ġinterface Ġto Ġhook Ġsome Ġpieces Ġof Ġcode Ġin Ġdifferent Ġplaces Ġof Ġinternal ĠK ross bow Ġexecution . Ċ Ġ* ĠThis Ġis Ġprimarily Ġmeant Ġfor Ġmonitoring , Ġlogging Ġor Ġdebugging . Ċ Ġ*/ Ċ interface ĠK ross bow Instrumentation Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġupon Ġre ception Ġof Ġevery Ġwebsocket Ġframe . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġon WebSocket Frame Received ( frame : ĠWebSocket Frame ) Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġright Ġafter Ġsuccessfully Ġdecoding Ġa Ġwebsocket Ġframe Ġinto Ġa ĠSTO MP Ġframe . ĊĠĠĠĠ Ġ* ĠThis Ġcallback Ġis Ġcalled Ġeven Ġfor ĠSTO MP ĠERROR Ġframes Ġ( before Ġfailure ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġon Frame Decoded ( original Frame : ĠWebSocket Frame , Ġdecoded Frame : ĠSto mp Frame ) Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġright Ġafter Ġsuccessfully Ġsending Ġa ĠSTO MP Ġ[ frame ] Ġto Ġthe Ġserver . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġon Sto mp Frame Sent ( frame : ĠSto mp Frame ) Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġafter Ġthe Ġwebsocket Ġis Ġclosed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIn Ġcase Ġof Ġa Ġnormal Ġclosure , Ġthe Ġ[ cause ] Ġargument Ġis Ġnull . ĊĠĠĠĠ Ġ* ĠThe Ġ[ cause ] Ġis Ġnon - null Ġif Ġthe Ġclosure Ġof Ġthe Ġweb Ġsocket Ġis Ġdue Ġto Ġan Ġexception Ġin Ġthe ĠSTO MP Ġclient Ġ( ST OMP ĠERROR ĊĠĠĠĠ Ġ* Ġframe , Ġunexpected Ġwebsocket Ġclose Ġframe , Ġmissing Ġheart - beat , Ġdecoding Ġerrors , Ġetc .). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġthis Ġcallback Ġis Ġnot Ġcalled Ġif Ġthe Ġwebsocket Ġclient Ġitself Ġfailed Ġwith Ġan Ġexception . ĊĠĠĠĠ Ġ* ĠIn Ġthat Ġcase , Ġ[ on WebSocket Client Error ] Ġis Ġcalled Ġinstead . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġon WebSocket Closed ( cause : ĠThrowable ?) Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġif Ġsome Ġexception Ġis Ġthrown Ġby Ġthe Ġwebsocket Ġclient . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġon WebSocket Client Error ( exception : ĠThrowable ) Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġnew Ġinstrument ation Ġchain Ġthat Ġruns Ġthis Ġinstrument ation Ġand Ġthe Ġgiven Ġ[ instrumentation ] Ġin Ġeach ĊĠĠĠĠ Ġ* Ġcallback . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġplus ( instrumentation : ĠK ross bow Instrumentation ): ĠK ross bow Instrumentation Ġ= ĊĠĠĠĠĠĠĠ ĠK ross bow Instrumentation Chain ( listOf ( this , Ġinstrument ation )) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġ[ K ross bow Instrumentation ] Ġthat Ġruns Ġmultiple Ġinstrument ations Ġin Ġsequence Ġfor Ġeach Ġcallback . Ċ Ġ*/ Ċ private Ġclass ĠK ross bow Instrumentation Chain ( ĊĠĠĠ Ġprivate Ġval Ġinstrument ations : ĠList < K ross bow Instrumentation > Ċ ) Ġ: ĠK ross bow Instrumentation Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon WebSocket Frame Received ( frame : ĠWebSocket Frame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ations . forEach Ġ{ Ġit . on WebSocket Frame Received ( frame ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Frame Decoded ( original Frame : ĠWebSocket Frame , Ġdecoded Frame : ĠSto mp Frame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ations . forEach Ġ{ Ġit . on Frame Decoded ( original Frame , Ġdecoded Frame ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Sto mp Frame Sent ( frame : ĠSto mp Frame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ations . forEach Ġ{ Ġit . on Sto mp Frame Sent ( frame ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon WebSocket Closed ( cause : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ations . forEach Ġ{ Ġit . on WebSocket Closed ( cause ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon WebSocket Client Error ( exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstrument ations . forEach Ġ{ Ġit . on WebSocket Client Error ( exception ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthis Ġis Ġjust Ġan Ġoptimization Ġto Ġavoid Ġnesting ĠK ross bow Instrumentation Chain Ġobjects ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( instrumentation : ĠK ross bow Instrumentation ): ĠK ross bow Instrumentation Ġ= ĊĠĠĠĠĠĠĠ ĠK ross bow Instrumentation Chain ( instrument ations Ġ+ Ġinstrument ation ) Ċ } Ċ