/* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMail ch imp ĠMobile ĠSDK ĠLicense ĠAgreement Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ġ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 Ġor Ġexpress Ġor Ġimplied . Ċ Ġ* Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mail ch imp . sdk . core . work Ċ Ċ import Ġandroidx . work .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ abstract Ġclass ĠS dk Work Request Ġ{ ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġrequire Internet Ġ= Ġtrue ĊĠĠĠ Ġprotected Ġopen Ġval Ġbackoff Policy Ġ= ĠBack off Policy . EXP ON ENTIAL ĊĠĠĠ Ġprotected Ġopen Ġval Ġbackoff Delay : ĠLong Ġ= Ġ 1 ĊĠĠĠ Ġprotected Ġopen Ġval Ġbackoff Delay Units Ġ= ĠTimeUnit . MIN UTES ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvide Ġthe Ġworker Ġclass Ġthat Ġwill Ġbe Ġperforming Ġthe Ġwork Ġfor Ġthis Ġrequest . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġclass Ġof Ġthe Ġworker Ġfor Ġthis Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġsdk Worker Class (): ĠClass < out ĠS dk Worker > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġto Ġspecify Ġinput Ġdata Ġfor Ġthe Ġsupplied Ġworker Ġclass . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġinput Ġdata Ġfor Ġthe Ġworker . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġwork Parameters (): ĠData ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġto Ġspecify Ġthe Ġ" unique Ġname " Ġof Ġthe Ġwork Ġthat Ġis Ġbeing Ġperformed . ĠThis Ġname Ġis Ġused Ġto ĊĠĠĠĠ Ġ* Ġqueue Ġwork Ġse quent ially . ĠMean ing Ġthat Ġa ĠS dk Worker Ġthat Ġhas Ġthe Ġsame Ġunique Ġname Ġas Ġanother ĠS dk Worker Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġse quent ially Ġqueued Ġone Ġafter Ġthe Ġother . ĠFor Ġexample : ĠWorker ĠA Ġwith Ġunique Ġname Ġ" Task ", ĠWorker ĠB Ġwith Ġunique ĊĠĠĠĠ Ġ* Ġname Ġ" Task B " Ġand ĠWorker ĠC Ġwith Ġunique Ġname Ġ" Task " Ġwill Ġcause Ġworker ĠA Ġand ĠC Ġto Ġbe Ġqueued Ġse quent ially Ġand ĠB Ġto Ġbe ĊĠĠĠĠ Ġ* Ġqueued Ġindependently Ġand Ġrun Ġparallel Ġ( if Ġthe Ġwork Ġmanager Ġconfiguration Ġhas Ġa Ġmulti - thread Ġexecutor Ġconfigured , ĊĠĠĠĠ Ġ* Ġwhich Ġis Ġthe Ġdefault ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġunique Ġname Ġof Ġthe Ġwork Ġbeing Ġperformed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġget Unique Work Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Sdk Worker " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġto Ġspecify Ġany Ġwork Ġnames Ġthat Ġthis ĠS dk Worker Ġis Ġdependent Ġon . ĠIf Ġthere Ġis Ġactive Ġwork Ġqueued ĊĠĠĠĠ Ġ* Ġor Ġrunning Ġwhen Ġthis Ġworker Ġis Ġsubmitted , Ġit Ġwill Ġbe Ġqueued Ġusing Ġthat Ġunique Ġname , Ġmeaning Ġthis ĠS dk Worker Ġwill ĊĠĠĠĠ Ġ* Ġexecute Ġse quent ially Ġafter Ġany Ġwork Ġactive Ġwith Ġany Ġof Ġthe Ġprovided Ġnames . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġspecify Ġmultiple Ġnames , Ġbut Ġonly Ġthe Ġfirst Ġmatch Ġwill Ġbe Ġused . Ġ( you Ġcannot Ġchain Ġwork Ġto Ġmultiple Ġindependent ĊĠĠĠĠ Ġ* Ġworkers ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġlist Ġof Ġunique Ġwork Ġnames Ġthat Ġthis ĠS dk Worker Ġis Ġdependent Ġon . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġget Pre ced ing Work Names (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġa Ġone Ġtime Ġwork Ġrequest Ġthat Ġrepresents Ġthis ĠSDK Ġwork Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġbuild Request (): ĠOne Time Work Request Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġif Ġ( require Internet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Required Network Type ( Network Type . CONNECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstraints . Builder (). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOne Time Work Request . Builder ( sdk Worker Class ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Backoff Criteria ( backoff Policy , Ġbackoff Delay , Ġbackoff Delay Units ) ĊĊĠĠĠĠĠĠĠ Ġwork Parameters ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Builder . set InputData ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrequest Builder . build () ĊĠĠĠ Ġ} Ċ }