/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 2 0 ĠJetBrains Ġs . r . o Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ import Ġio . ktor . client . features . tracing .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . http . c io . websocket .* Ċ Ċ class ĠTest Tracer Ġ: ĠTr acer Ġ{ ĊĠĠĠ Ġval Ġrequest Will Be Sent Calls Ġ= Ġmutable ListOf < Request Will Be Sent Call >() ĊĠĠĠ Ġval Ġresponse Headers Received Calls Ġ= Ġmutable ListOf < Response Headers Received Call >() ĊĠĠĠ Ġval Ġinterpret Response Calls Ġ= Ġmutable ListOf < Inter pret Response Call >() ĊĠĠĠ Ġval Ġhttp Exchange Failed Calls Ġ= Ġmutable ListOf < Http Exchange Failed Call >() ĊĠĠĠ Ġval Ġresponse Read Finished Calls Ġ= Ġmutable ListOf < Response Read Finished Call >() ĊĠĠĠ Ġval Ġweb Socket Created Calls Ġ= Ġmutable ListOf < WebSocket Created Call >() ĊĠĠĠ Ġval Ġweb Socket Will Send Handshake Request Calls Ġ= Ġmutable ListOf < WebSocket Will Send Handshake Request Call >() ĊĠĠĠ Ġval Ġweb Socket Handshake Response Received Calls Ġ= Ġmutable ListOf < WebSocket Handshake Response Received Call >() ĊĠĠĠ Ġval Ġweb Socket Frame Sent Calls Ġ= Ġmutable ListOf < WebSocket Frame Sent Call >() ĊĠĠĠ Ġval Ġweb Socket Frame Received Calls Ġ= Ġmutable ListOf < WebSocket Frame Received Call >() ĊĠĠĠ Ġval Ġweb Socket Closed Calls Ġ= Ġmutable ListOf < WebSocket Closed Call >() ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Will Be Sent ( requestId : ĠString , Ġrequest Data : ĠHttpRequest Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Will Be Sent Calls Ġ+= ĠRequest Will Be Sent Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresponse Headers Received ( ĊĠĠĠĠĠĠĠ ĠrequestId : ĠString , ĊĠĠĠĠĠĠĠ Ġrequest Data : ĠHttpRequest Data , ĊĠĠĠĠĠĠĠ Ġresponse Data : ĠHttpResponse Data ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Headers Received Calls Ġ+= ĠResponse Headers Received Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinterpret Response ( ĊĠĠĠĠĠĠĠ ĠrequestId : ĠString , ĊĠĠĠĠĠĠĠ ĠcontentType : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcontent Encoding : ĠString ?, ĊĠĠĠĠĠĠĠ Ġbody : ĠAny ? ĊĠĠĠ Ġ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterpret Response Calls Ġ+= ĠInter pret Response Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Encoding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbody ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhttp Exchange Failed ( requestId : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Exchange Failed Calls Ġ+= ĠHttp Exchange Failed Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresponse Read Finished ( requestId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Read Finished Calls Ġ+= ĠResponse Read Finished Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Created ( requestId : ĠString , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Created Calls Ġ+= ĠWebSocket Created Call ( requestId , Ġurl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Will Send Handshake Request ( requestId : ĠString , Ġrequest Data : ĠHttpRequest Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Will Send Handshake Request Calls Ġ+= ĠWebSocket Will Send Handshake Request Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Data ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Handshake Response Received ( ĊĠĠĠĠĠĠĠ ĠrequestId : ĠString , ĊĠĠĠĠĠĠĠ Ġrequest Data : ĠHttpRequest Data , ĊĠĠĠĠĠĠĠ Ġresponse Data : ĠHttpResponse Data ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Handshake Response Received Calls Ġ+= ĠWebSocket Handshake Response Received Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Data ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Frame Sent ( requestId : ĠString , Ġframe : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Frame Sent Calls Ġ+= ĠWebSocket Frame Sent Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Frame Received ( requestId : ĠString , Ġframe : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Frame Received Calls Ġ+= ĠWebSocket Frame Received Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġweb Socket Closed ( requestId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Socket Closed Calls Ġ+= ĠWebSocket Closed Call ( requestId ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠRequest Will Be Sent Call ( val ĠrequestId : ĠString , Ġval Ġrequest Data : ĠHttpRequest Data ) Ċ Ċ data Ġclass ĠResponse Headers Received Call ( ĊĠĠĠ Ġval ĠrequestId : ĠString , Ġval Ġrequest Data : ĠHttpRequest Data , ĊĠĠĠ Ġval Ġresponse Data : ĠHttpResponse Data Ċ ) Ċ Ċ data Ġclass ĠInter pret Response Call ( ĊĠĠĠ Ġval ĠrequestId : ĠString , Ġval ĠcontentType : ĠString ?, ĊĠĠĠ Ġval Ġcontent Encoding : ĠString ?, ĊĠĠĠ Ġval Ġbody : ĠAny ? Ċ ) Ċ Ċ data Ġclass ĠHttp Exchange Failed Call ( val ĠrequestId : ĠString , Ġval Ġmessage : ĠString ) Ċ Ċ data Ġclass ĠResponse Read Finished Call ( val ĠrequestId : ĠString ) Ċ Ċ data Ġclass ĠWebSocket Created Call ( val ĠrequestId : ĠString , Ġval Ġurl : ĠString ) Ċ Ċ data Ġclass ĠWebSocket Will Send Handshake Request Call ( val ĠrequestId : ĠString , Ġval Ġrequest Data : ĠHttpRequest Data ) Ċ Ċ data Ġclass ĠWebSocket Handshake Response Received Call ( ĊĠĠĠ Ġval ĠrequestId : ĠString , Ġval Ġrequest Data : ĠHttpRequest Data , ĊĠĠĠ Ġval Ġresponse Data : ĠHttpResponse Data Ċ ) Ċ Ċ data Ġclass ĠWebSocket Frame Sent Call ( val ĠrequestId : ĠString , Ġval Ġframe : ĠFrame ) Ċ Ċ data Ġclass ĠWebSocket Frame Received Call ( val ĠrequestId : ĠString , Ġval Ġframe : ĠFrame ) Ċ Ċ data Ġclass ĠWebSocket Closed Call ( val ĠrequestId : ĠString ) Ċ