/* Ċ * ĠCopyright Ġ 2 0 1 9 ĠP and ora ĠMedia , ĠLLC Ċ * Ċ * ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ * Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ * ĠSee Ġaccompanying ĠLICENSE Ġfile Ġor Ġ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 . pand ora . recipe book . interval Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . channels . consume Each Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /* Ċ Ġ* ĠA Ġsample Ġof Ġhow Ġto Ġimplement Ġa Ġstream Ġthat Ġemits Ġvalues Ġat Ġa Ġspecified Ġtime Ġinterval Ġusing ĠKotlin 's Ġasynchronous Ġprogramming ĠAPIs Ċ Ġ*/ Ċ class ĠK t Interval ( ĊĠĠĠ Ġval Ġinterval Ms : ĠLong Ġ= Ġ 1 0 0 0 , ĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context Ġ= ĠDispatch ers . Default Ċ ): ĠCor outine Scope Ġ{ ĊĠĠĠ Ġval Ġchannel Ġ= ĠChannel < String >() ĊĠĠĠ Ġprivate Ġvar Ġseconds Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Seconds () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( interval Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . consume Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Kt Interval Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġemit Seconds () Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel . send (" seconds Ġsince Ġstart : Ġ$ seconds ") ĊĠĠĠĠĠĠĠ Ġseconds ++ ĊĠĠĠ Ġ} Ċ }