/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠJ oh ann es ĠDon ath Ġ< jo h ann es d @ torch mind . com > Ċ Ġ* Ġand Ġother Ġcopyright Ġowners Ġas Ġdocumented Ġin Ġthe Ġproject 's ĠIP Ġlog . Ċ Ġ* Ċ Ġ* Ġ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 Ġtv . dot start . badge . service . health . check Ċ Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġreactor . core . publisher . Mono Ċ import Ġtv . dot start . badge . service . connector . Connector Ċ import Ġtv . dot start . badge . service . health . Health Ċ Ċ /** Ċ Ġ* ĠProvides Ġa Ġhealth Ġcheck Ġfor Ġevery Ġconnector Ġwithin Ġthe Ġsystem . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ J oh ann es ĠDon ath ]( mailto : jo h ann es d @ torch mind . com ) Ċ Ġ* Ġ@ date Ġ 0 9 / 0 5 / 2 0 2 0 Ċ Ġ*/ Ċ class ĠConnector HealthCheck Ġprivate Ġconstructor ( private Ġval Ġconnector : ĠConnector ) Ġ: ĠHealth Check Ġ{ ĊĊĠ Ġoverride Ġval Ġid Ġ= Ġ" connector .${ connector . name }" ĊĊĠ Ġoverride Ġfun ĠgetState (): ĠMono < Health > Ġ{ ĊĠĠĠ Ġval Ġlimit Ġ= Ġthis . connector . rate Limit Ġ?: Ġreturn ĠMono . just ( Health . OK ) ĊĠĠĠ Ġval Ġde grad ation Limit Ġ= Ġlimit Ġ* Ġ 0 . 7 5 ĊĊĠĠĠ Ġreturn Ġthis . connector . get RateLimit Usage () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ>= Ġlimit Ġ-> ĠHealth . FAILED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ>= Ġde grad ation Limit Ġ-> ĠHealth . DE GR ADED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠHealth . OK ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Component ĊĠ Ġclass ĠFactory ( private Ġval Ġconnector s : ĠList < Connector >) Ġ: ĠHealth Check . Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ= Ġthis . connectors ĊĠĠĠĠĠĠĠ Ġ. map (:: Connector HealthCheck ) ĊĠ Ġ} Ċ } Ċ