package Ġio . envoy proxy . envoy mobile Ċ Ċ import Ġio . envoy proxy . envoy mobile . engine . types . En voy Final Stream Intel Ċ import Ġio . envoy proxy . envoy mobile . engine . types . En voy HTTP Filter Ċ import Ġio . envoy proxy . envoy mobile . engine . types . En voy HTTP Filter Callbacks Ċ import Ġio . envoy proxy . envoy mobile . engine . types . En voy HTTP Filter Factory Ċ import Ġio . envoy proxy . envoy mobile . engine . types . En voy Stream Intel Ċ import Ġjava . nio . ByteBuffer Ċ Ċ /* Ċ Ġ* ĠInterface Ġrepresenting Ġa Ġfilter . ĠSee Ġ` Request Filter ` Ġand Ġ` Response Filter ` Ġfor Ġmore Ġdetails . Ċ Ġ*/ Ċ @ Suppress (" Empty Class Block ") Ċ interface ĠFilter Ċ Ċ internal Ġclass ĠFilter Factory ( ĊĠ Ġprivate Ġval Ġfilter Name : ĠString , ĊĠ Ġprivate Ġval Ġfactory : Ġ() Ġ-> ĠFilter Ċ ) Ġ: ĠEn voy HTTP Filter Factory Ġ{ ĊĠ Ġoverride Ġfun Ġget Filter Name (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġfilter Name ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate (): ĠEn voy HTTP Filter Ġ{ Ġreturn ĠEn voy HTTP Filter Adapter ( factory ()) Ġ} Ċ } Ċ Ċ internal Ġclass ĠEn voy HTTP Filter Adapter ( ĊĠ Ġprivate Ġval Ġfilter : ĠFilter Ċ ) Ġ: ĠEn voy HTTP Filter Ġ{ ĊĊĠ Ġoverride Ġfun Ġon Request Headers ( headers : ĠMap < String , ĠList < String >>, Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠRequest Filter )?. let Ġ{ Ġrequest Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġrequest Filter . on Request Headers ( Request Headers ( headers ), Ġend Stream , ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Headers Status . Continue Ġ-> ĠarrayOf ( result . status , Ġresult . headers . headers ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Headers Status . Stop Iteration Ġ-> ĠarrayOf ( result . status , Ġempty Map < String , ĠList < String >> ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġheaders ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Response Headers ( headers : ĠMap < String , ĠList < String >>, Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġresponse Filter . on Response Headers ( Response Headers ( headers ), Ġend Stream , ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Headers Status . Continue Ġ-> ĠarrayOf ( result . status , Ġresult . headers . headers ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Headers Status . Stop Iteration Ġ-> ĠarrayOf ( result . status , Ġempty Map < String , ĠList < String >> ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġheaders ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Request Data ( data : ĠByteBuffer , Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠRequest Filter )?. let Ġ{ Ġrequest Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġrequest Filter . on Request Data ( data , Ġend Stream , ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Continue < *> Ġ-> ĠarrayOf ( result . status , Ġresult . data ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Stop Iteration And Buffer < *> Ġ-> ĠarrayOf ( result . status , ĠByteBuffer . allocate ( 0 )) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Stop Iteration No Buffer < *> Ġ-> ĠarrayOf ( result . status , ĠByteBuffer . allocate ( 0 )) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Resume Iteration < *> Ġ-> ĠarrayOf ( result . status , Ġresult . data , Ġresult . headers ?. headers ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġdata ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon ResponseData ( data : ĠByteBuffer , Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġresponse Filter . on ResponseData ( data , Ġend Stream , ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Continue < *> Ġ-> ĠarrayOf ( result . status , Ġresult . data ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Stop Iteration And Buffer < *> Ġ-> ĠarrayOf ( result . status , ĠByteBuffer . allocate ( 0 )) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Stop Iteration No Buffer < *> Ġ-> ĠarrayOf ( result . status , ĠByteBuffer . allocate ( 0 )) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Data Status . Resume Iteration < *> Ġ-> ĠarrayOf ( result . status , Ġresult . data , Ġresult . headers ?. headers ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġdata ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Request Trail ers ( trail ers : ĠMap < String , ĠList < String >>, Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠRequest Filter )?. let Ġ{ Ġrequest Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġrequest Filter . on Request Trail ers ( Request Trail ers ( trail ers ), ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Continue < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . trail ers . headers ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Stop Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġempty Map < String , ĠList < String >> ()) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Resume Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . trail ers . headers , Ġresult . headers ?. headers , Ġresult . data ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġtrail ers ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Response Trail ers ( trail ers : ĠMap < String , ĠList < String >>, Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġresponse Filter . on Response Trail ers ( Response Trail ers ( trail ers ), ĠStream Intel ( stream Intel )) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Continue < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . trail ers . headers ) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Stop Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġempty Map < String , ĠList < String >> ()) ĊĠĠĠĠĠĠĠ Ġis ĠFilter Trail ers Status . Resume Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . trail ers . headers , Ġresult . headers ?. headers , Ġresult . data ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf ( 0 , Ġtrail ers ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonError ( errorCode : ĠInt , Ġmessage : ĠString , Ġattempt Count : ĠInt , Ġstream Intel : ĠEn voy Stream Intel , Ġfinal Stream Intel : ĠEn voy Final Stream Intel ) Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġresponse Filter . onError ( En voy Error ( errorCode , Ġmessage , Ġattempt Count ), ĠFinal Stream Intel ( stream Intel , Ġfinal Stream Intel )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Cancel ( stream Intel : ĠEn voy Stream Intel , Ġfinal Stream Intel : ĠEn voy Final Stream Intel ) Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġresponse Filter . on Cancel ( Final Stream Intel ( stream Intel , Ġfinal Stream Intel )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonComplete ( stream Intel : ĠEn voy Stream Intel , Ġfinal Stream Intel : ĠEn voy Final Stream Intel ) Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠResponse Filter )?. let Ġ{ Ġresponse Filter Ġ-> ĊĠĠĠĠĠ Ġresponse Filter . onComplete ( Final Stream Intel ( stream Intel , Ġfinal Stream Intel )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġset Request Filter Callbacks ( callbacks : ĠEn voy HTTP Filter Callbacks ) Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠAsync Request Filter )?. let Ġ{ Ġasync Request Filter Ġ-> ĊĠĠĠĠĠ Ġasync Request Filter . setRequest Filter Callbacks ( Request Filter Callbacks Impl ( callbacks )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume Request ( headers : ĠMap < String , ĠList < String >> ?, Ġdata : ĠByteBuffer ?, Ġtrail ers : ĠMap < String , ĠList < String >> ?, Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠAsync Request Filter )?. let Ġ{ Ġasync Request Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġasync Request Filter . on Resume Request ( ĊĠĠĠĠĠĠĠ Ġheaders ?. let (:: Request Headers ), ĊĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠ Ġtrail ers ?. let (:: Request Trail ers ), ĊĠĠĠĠĠĠĠ Ġend Stream , ĊĠĠĠĠĠĠĠ ĠStream Intel ( stream Intel ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Resume Status . Resume Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . headers ?. headers , Ġresult . data , Ġresult . trail ers ?. headers ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf (- 1 , Ġheaders , Ġdata , Ġtrail ers ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġset Response Filter Callbacks ( callbacks : ĠEn voy HTTP Filter Callbacks ) Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠAsync Response Filter )?. let Ġ{ Ġasync Response Filter Ġ-> ĊĠĠĠĠĠ Ġasync Response Filter . set Response Filter Callbacks ( Response Filter Callbacks Impl ( callbacks )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume Response ( headers : ĠMap < String , ĠList < String >> ?, Ġdata : ĠByteBuffer ?, Ġtrail ers : ĠMap < String , ĠList < String >> ?, Ġend Stream : ĠBoolean , Ġstream Intel : ĠEn voy Stream Intel ): ĠArray < Any ?> Ġ{ ĊĠĠĠ Ġ( filter Ġas ? ĠAsync Response Filter )?. let Ġ{ Ġasync Response Filter Ġ-> ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġasync Response Filter . on Resume Response ( ĊĠĠĠĠĠĠĠ Ġheaders ?. let (:: Response Headers ), ĊĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠ Ġtrail ers ?. let (:: Response Trail ers ), ĊĠĠĠĠĠĠĠ Ġend Stream , ĊĠĠĠĠĠĠĠ ĠStream Intel ( stream Intel ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFilter Resume Status . Resume Iteration < *, Ġ*> Ġ-> ĠarrayOf ( result . status , Ġresult . headers ?. headers , Ġresult . data , Ġresult . trail ers ?. headers ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠarrayOf (- 1 , Ġheaders , Ġdata , Ġtrail ers ) ĊĠ Ġ} Ċ } Ċ