package Ġcom . ton y ode v . fetch 2 . fetch Ċ Ċ import Ġcom . ton y ode v . fetch 2 . downloader . File Downloader Ċ Ċ class ĠDownload Manager Coordinator ( val Ġnamespace : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAny () ĊĠĠĠ Ġprivate Ġval Ġfile Downloader Map Ġ= Ġmutable Map Of < Int , ĠFile Downloader >() ĊĊĠĠĠ Ġfun Ġinterrupt Download ( download Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Downloader Ġ= Ġfile Downloader Map [ download Id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Downloader Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader . inter rupted Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! file Downloader . terminated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Wait Ġuntil Ġdownload Ġrunnable Ġtermin ates ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Map . remove ( download Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd File Downloader ( download Id : ĠInt , Ġfile Downloader : ĠFile Downloader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Map [ download Id ] Ġ= Ġfile Downloader ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove File Downloader ( download Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Map . remove ( download Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetFile Downloader List (): ĠList < File Downloader > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Map . values . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontains File Downloader ( download Id : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Downloader Ġ= Ġfile Downloader Map [ download Id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear All () Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Downloader Map . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }