package Ġcom . sys 1 y agi . android . kotlin . coroutine Ċ Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . api . Shop Api Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . api . Subscription Shop Api Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . api . User Api Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . coroutine . async Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . coroutine . ui Ċ import Ġcom . sys 1 y agi . android . kotlin . coroutine . databinding . Activity Main Binding Ċ import Ġkotlinx . coroutines . experimental . Cancellation Exception Ċ import Ġkotlinx . coroutines . experimental . Job Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval Ġshop Api Ġ= ĠShop Api () ĊĠĠĠ Ġval Ġuser Api Ġ= ĠUser Api () ĊĠĠĠ Ġval Ġsubscription Shop Api Ġ= ĠSubscription Shop Api () ĊĊĠĠĠ Ġval Ġbinding Ġby Ġlazy Ġ{ ĠData Binding Util . set ContentView < Activity Main Binding >( this , ĠR . layout . activity _ main ) Ġ} ĊĊĠĠĠ Ġvar Ġjob : ĠJob Ġ= ĠJob () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . single Request Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . serialized Request Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserialized Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . parallel Request Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparallel Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsingle Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġjob . cancel () ĊĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" loading ..." ĊĠĠĠĠĠĠĠ Ġjob Ġ= Ġui Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshop Ġ= Ġasync Ġ{ Ġshop Api . get Shop ( 1 0 ) Ġ}. await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" success ! Ġshop Ġid =${ shop . id }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" cancel !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" error !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġno Ġextensions Ċ // ĠĠĠĠĠĠĠ Ġjob Ġ= Ġlaunch ( UI ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshop Ġ= Ġasync ( Common Pool ) Ġ{ Ġshop Api . get Shop ( 1 0 ) Ġ}. await () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" success ! Ġshop Ġid =${ shop . id }" Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠC ancellation Exception ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" cancel !" Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . single Request Result . text Ġ= Ġ" error !" Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġserialized Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġjob . cancel () ĊĠĠĠĠĠĠĠ Ġbinding . serialized Request Result . text Ġ= Ġ" loading ..." ĊĠĠĠĠĠĠĠ Ġjob Ġ= Ġui Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Job Ġ= Ġasync Ġ{ Ġuser Api . me () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscription Sh ops Job Ġ= Ġasync Ġ{ Ġsubscription Shop Api . get Subscription Sh ops ( user Job . await (). id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscription Sh ops Ġ= Ġsubscription Sh ops Job . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . serialized Request Result . text Ġ= Ġ" success ! Ġsuc scription Ġshop Ġcount Ġ= Ġ${ subscription Sh ops . size }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . serialized Request Result . text Ġ= Ġ" cancel !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . serialized Request Result . text Ġ= Ġ" error !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparallel Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġjob . cancel () ĊĠĠĠĠĠĠĠ Ġbinding . parallel Request Result . text Ġ= Ġ" loading ..." ĊĠĠĠĠĠĠĠ Ġjob Ġ= Ġui Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Job Ġ= Ġasync Ġ{ Ġuser Api . me () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshop Job Ġ= Ġasync Ġ{ Ġshop Api . get Shop ( 1 0 L ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . parallel Request Result . text Ġ= Ġ" success ! Ġuser Ġid Ġ= Ġ${ user Job . await (). id }, Ġshop Ġid Ġ= Ġ${ shop Job . await (). id }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . parallel Request Result . text Ġ= Ġ" cancel !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . parallel Request Result . text Ġ= Ġ" error !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ