Ċ /* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . android . tools . profiler . network Ċ import Ġcom . android . tools . profiler . proto . Common Ċ import Ġcom . android . tools . profiler . proto . Network Profiler Ċ import Ġcom . android . tools . profiler . proto . Network Service Grpc Ċ import Ġcom . android . tools . transport . TestUtils Ċ import Ġcom . android . tools . transport . grpc . Grpc Ċ import Ġjava . util . function . Predicate Ċ import Ġjava . util . function . Supplier Ċ Ċ class ĠNetwork Stub Wrapper ( val Ġnetwork Stub : ĠNetwork Service Grpc . Network Service Blocking Stub ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvenience Ġmethod Ġfor Ġcreating Ġa Ġwrapper Ġwhen Ġyou Ġdon 't Ġneed Ġto Ġcreate Ġthe Ġunderlying ĊĠĠĠĠĠĠĠĠ Ġ* Ġstub Ġyourself . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( grpc : ĠGr pc ): ĠNetwork Stub Wrapper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNetwork Stub Wrapper ( Network Service Grpc . new Blocking Stub ( grpc . channel )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġan Ġhttp Ġrange Ġthat Ġhave Ġat Ġleast Ġone Ġelement Ġin Ġit . ĠThis Ġmethod Ġwill Ġblock Ġuntil Ġa ĊĠĠĠĠ Ġ* Ġnon - empty Ġrange Ġis Ġreturned . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Non Empty Http Range ( session : ĠCommon . Session ): ĠNetwork Profiler . Http Range Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTestUtils . waitFor And Return ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Http Range Supplier ( session ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPredicate Ġ{ Ġresult Ġ-> Ġresult . data List . size Ġ> Ġ 0 Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Http Range Supplier ( session : ĠCommon . Session ): ĠSupplier < Network Profiler . Http Range Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSupplier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Stub . get Http Range ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Profiler . Http Range Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Session ( session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Timestamp ( 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set End Timestamp ( Long . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Http Details ( conn Id : ĠLong , Ġtype : ĠNetwork Profiler . Http Details Request . Type ): ĠNetwork Profiler . Http Details Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork Stub . get Http Details ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Profiler . Http Details Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Conn Id ( conn Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġpayload Ġid Ġfor Ġthe Ġrequested Ġ[ conn Id ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġoperation Ġmay Ġblock , Ġbecause Ġit Ġtakes Ġsome Ġtime Ġafter Ġconnections Ġare Ġfirst ĊĠĠĠĠ Ġ* Ġtracked Ġbefore Ġa Ġpayload ĠID Ġis Ġgenerated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Payload Id ( conn Id : ĠLong , Ġtype : ĠNetwork Profiler . Http Details Request . Type ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTestUtils . Kt . waitFor And Return ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġget Http Details ( conn Id , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠNetwork Profiler . Http Details Request . Type . RESPONSE _ BODY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . response Body . payload Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . request Body . payload Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpayload Id Ġ-> Ġpayload Id . isNotEmpty () Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ