/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠOn a ĠSystems , ĠInc Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . smart register . fhir core . engine . configuration . app Ċ Ċ import Ġcom . google . android . fhir . Fhir Engine Ċ import Ġcom . google . android . fhir . sync . Fhir Sync Worker Ċ import Ġcom . google . android . fhir . sync . Periodic Sync Configuration Ċ import Ġcom . google . android . fhir . sync . Repeat Interval Ċ import Ġcom . google . android . fhir . sync . Sync Job Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . hl 7 . fhir . r 4 . model . ResourceType Ċ import Ġorg . smart register . fhir core . engine . configuration . Configuration Registry Ċ import Ġorg . smart register . fhir core . engine . sync . Sync Broad caster Ċ Ċ /** Ċ Ġ* ĠAn Ġinterface Ġthat Ġprovides Ġthe Ġapplication Ġconfigurations . Ċ Ġ* Ġ@ property Ġresource Sync Params ĠSet Ġ[ Fhir Engine ] Ġresource Ġsync Ġparams Ġneeded Ġfor Ġsync ing Ġdata Ġfrom Ċ Ġ* Ġthe Ġserver Ċ Ġ*/ Ċ interface ĠConfig Service Ġ{ ĊĊĠ Ġval Ġresource Sync Params : ĠMap < ResourceType , ĠMap < String , ĠString >> ĊĊĠ Ġ/** ĠProvide Ġ[ Auth Configuration ] Ġfor Ġthe ĠApplication Ġ*/ ĊĠ Ġfun Ġprovide Auth Configuration (): ĠAuth Configuration ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSchedule Ġperiodic Ġsync Ġperiodically Ġas Ġdefined Ġin Ġthe Ġ[ configuration Registry ] Ġapplication ĊĠĠ Ġ* Ġconfig Ġinterval . ĠThe Ġ[ sync Broad caster ] Ġwill Ġbroadcast Ġthe Ġsync Ġstatus Ġto Ġits Ġlisteners ĊĠĠ Ġ*/ ĊĠ Ġfun Ġschedule Periodic Sync ( ĊĠĠĠ Ġsync Job : ĠSync Job , ĊĠĠĠ Ġconfiguration Registry : ĠConfiguration Registry , ĊĠĠĠ Ġsync Broad caster : ĠSync Broad caster , ĊĠĠĠ Ġsync Interval : ĠLong Ġ= Ġ 3 0 ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġsync Job . poll ( ĊĠĠĠĠĠ Ġperiodic Sync Configuration Ġ= ĊĠĠĠĠĠĠĠ ĠPeriod ic Sync Configuration ( repeat Ġ= ĠRepeat Interval ( sync Interval , ĠTimeUnit . MIN UTES )), ĊĠĠĠĠĠ Ġclazz Ġ= ĠF hir Sync Worker :: class . java ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠ Ġsync Job . state Flow (). collect Ġ{ Ġsync Broad caster . broadcast Sync ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ