/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 , ĠN ord ic ĠSem icon duct or Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* Ċ Ġ* Ġ 1 . ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* Ċ Ġ* Ġ 2 . ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ċ Ġ* Ġdocumentation Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ġ* Ċ Ġ* Ġ 3 . ĠNeither Ġthe Ġname Ġof Ġthe Ġcopyright Ġholder Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ċ Ġ* Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT Ċ Ġ* ĠHOLDER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON Ċ Ġ* ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE Ċ Ġ* ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ Ċ package Ġno . n ord ic semi . android . ble Ċ Ċ import Ġandroidx . annotation . Int Range Ċ import Ġno . n ord ic semi . android . ble . callback . Before Callback Ċ import Ġno . n ord ic semi . android . ble . callback . Fail Callback Ċ import Ġno . n ord ic semi . android . ble . callback . Invalid Request Callback Ċ import Ġno . n ord ic semi . android . ble . callback . Success Callback Ċ import Ġjava . util .* Ċ Ċ open Ġclass ĠRequest Queue Ġinternal Ġconstructor () Ġ: ĠSimple Request ( Request . Type . SET ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġoperations Ġthat Ġwill Ġbe Ġexecuted Ġtogether . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġrequests : ĠQueue < Request > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġwhether Ġthe Ġset Ġis Ġempty , Ġor Ġnot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġset Ġis Ġempty . ĠSet Ġgets Ġe mpt ied Ġwhile Ġit Ġall Ġen queued Ġoperations ĊĠĠĠĠ Ġ* Ġare Ġbeing Ġexecuted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrequests . isEmpty () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnext Ġ[ Request ] Ġto Ġbe Ġen queued . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnext Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġopen // Ġpoll () Ġmay Ġalso Ġthrow Ġan Ġexception ĊĠĠĠ Ġ// ĠSee : Ġhttps :// github . com / N ord ic Sem icon duct or / Android - BLE - Library / issues / 3 7 ĊĠĠĠ Ġval Ġnext : ĠRequest ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequests . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequests Ġ= ĠLinkedList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Manager ( manager : ĠB le Manager < *> ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Manager ( manager ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdone ( callback : ĠSuccess Callback ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . done ( callback ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfail ( callback : ĠFail Callback ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . fail ( callback ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvalid ( callback : ĠInvalid Request Callback ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . invalid ( callback ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore ( callback : ĠBefore Callback ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . before ( callback ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn queues Ġa Ġnew Ġoperation . ĠAll Ġoperations Ġwill Ġbe Ġexecuted Ġse quent ially Ġin Ġorder Ġthey Ġwere ĊĠĠĠĠ Ġ* Ġadded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoperation Ġthe Ġnew Ġoperation Ġto Ġbe Ġen queued . ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalStateException ĠĠĠ Ġif Ġthe Ġoperation Ġwas Ġen queued Ġbefore . ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġoperation Ġis Ġnot Ġa Ġ[ Request ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġadd ( operation : ĠOperation ): ĠRequest Queue Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Ġis ĠRequest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġoperation Ġas ĠRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠValidate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . en queued ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Request Ġalready Ġen queued ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequests . add ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . en queued Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Operation Ġdoes Ġnot Ġextend ĠRequest ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnumber Ġof Ġen queued Ġoperations . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġsize Ġof Ġthe Ġinternal Ġoperations Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 ) ĊĠĠĠ Ġopen Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequests . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel s Ġall Ġthe Ġen queued Ġoperations Ġthat Ġwere Ġnot Ġexecuted Ġyet . ĊĠĠĠĠ Ġ* ĠThe Ġone Ġcurrently Ġexecuted Ġwill Ġbe Ġfinished . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġis Ġsafe Ġto Ġcall Ġthis Ġmethod Ġin Ġ[ Request . done ] Ġor ĊĠĠĠĠ Ġ* Ġ[ Request . fail ] Ġcallback ; ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġcancel Queue () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequests . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġwhether Ġthere Ġare Ġmore Ġoperations Ġto Ġbe Ġexecuted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue , Ġif Ġnot Ġall Ġoperations Ġwere Ġcompleted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġopen Ġfun Ġhas More (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! requests . isEmpty () ĊĠĠĠ Ġ} Ċ } Ċ