package Ġcom . mit s uki . arm ory . load progress Ċ Ċ import Ġio . reactivex . rx java 3 . subjects . Publish Subject Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġok io .* Ċ Ċ class ĠProgress ResponseBody ( ĊĠĠĠ Ġtag : ĠString , ĊĠĠĠ Ġprivate Ġval Ġm ResponseBody : ĠResponse Body , ĊĠĠĠ Ġprivate Ġval Ġon Progress : ĠPublish Subject < Progress > Ċ ) Ġ: ĠResponse Body () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Progress Ġby Ġlazy Ġ{ ĠProgress ( tag , Ġ 0 , Ġ 0 ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontent Length (): ĠLong Ġ= Ġm ResponseBody . content Length () ĊĊĠĠĠ Ġoverride Ġfun ĠcontentType (): ĠMediaType ? Ġ= Ġm ResponseBody . contentType () ĊĊĠĠĠ Ġoverride Ġfun Ġsource (): ĠBuffered Source Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm ResponseBody . source (). run Ġ{ Ġsource ( this ). buffer () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsource ( source : ĠSource ): ĠSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠForward ing Source ( source ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Total Bytes Read : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( sink : ĠBuffer , Ġbyte Count : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . read ( sink , Ġbyte Count ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Total Bytes Read Ġ+= Ġif Ġ( this Ġ!= Ġ- 1 L ) Ġthis Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress . onNext ( m Progress . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Length Ġ= Ġcontent Length () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Bytes Ġ= Ġm Total Bytes Read ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }