/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 Ġoriginal Ġauthors Ċ Ġ* Ċ Ġ* Ġ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 Ġio . mic ronaut . docs . sse Ċ Ċ import Ġio . mic ronaut . docs . streaming . Head line Ċ import Ġio . mic ronaut . http . MediaType Ċ import Ġio . mic ronaut . http . annotation . Controller Ċ import Ġio . mic ronaut . http . annotation . Get Ċ import Ġio . mic ronaut . http . sse . Event Ċ import Ġio . reactivex . Back pressure Strategy Ċ import Ġio . reactivex . Flow able Ċ Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Controller ("/ streaming / sse ") Ċ class ĠHead line Controller Ġ{ ĊĊĠĠĠ Ġ// Ġtag :: streaming [] ĊĠĠĠ Ġ@ Get ( value Ġ= Ġ"/ head lines ", Ġprocesses Ġ= Ġ[ MediaType . TEXT _ EVENT _ STREAM ]) Ġ// Ġ< 1 > ĊĠĠĠ Ġinternal Ġfun Ġstream Head lines (): ĠFlow able < Event < Head line >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . create < Event < Head line >>( Ġ{ Ġ Ġ// Ġ< 2 > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheadline Ġ= ĠHead line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheadline . text Ġ= Ġ" Latest ĠHead line Ġat Ġ" Ġ+ ĠZ onedDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( Event . of ( headline )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠ Ġ}, ĠBack pressure Strategy . BUFFER ). repeat ( 1 0 0 ) Ġ// Ġ< 3 > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delay ( 1 , ĠTimeUnit . SECONDS ) Ġ// Ġ< 4 > ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend :: streaming [] Ċ } Ċ