package Ġorg . jetbrains . ktor . netty Ċ Ċ import Ġio . netty . channel .* Ċ import Ġio . netty . handler . codec . http .* Ċ import Ġio . netty . util .* Ċ import Ġorg . jetbrains . ktor . pipeline .* Ċ Ċ class ĠNet ty Content Queue ( val Ġcontext : ĠChannel HandlerContext ) Ġ: ĠS uspend Queue < Http Content >( 2 ) Ġ{ ĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Ġ{ Ġit . release () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pull ( element : ĠHttp Content ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . read () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠRaw Content Queue ( val Ġcontext : ĠChannel HandlerContext ) Ġ: ĠChannel Inbound Handler Adapter () Ġ{ ĊĠĠĠ Ġval Ġqueue Ġ= ĠNet ty Content Queue ( context ) ĊĠĠĠ Ġprivate Ġvar Ġclosed Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġclosed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġqueue . clear Ġ{ Ġit . release () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Read ( ctx : ĠChannel HandlerContext ?, Ġmsg : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! closed Ġ&& Ġmsg Ġis ĠHttp Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . push ( msg , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( msg Ġis ĠReference Count ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . release () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġopen Ġclass ĠHttp Content Queue ( val Ġcontext : ĠChannel HandlerContext ) Ġ: ĠSimple Channel Inbound Handler < Http Content >( false ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ queue : ĠNet ty Content Queue ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġqueue Ġget () Ġ= Ġ_ queue Ġ?: ĠNet ty Content Queue ( context ). also Ġ{ Ġ_ queue Ġ= Ġit Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Read 0 ( context : ĠChannel HandlerContext , Ġmsg : ĠHttp Content ) Ġ{ ĊĠĠĠĠĠĠĠ Ġqueue . push ( msg , Ġmsg Ġis ĠLast Http Content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Inactive ( ctx : ĠChannel HandlerContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġsuper . channel Inactive ( ctx ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ queue ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ queue Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }