package Ġcom . q ubit . android . sdk . internal . callback tracker Ċ Ċ import Ġcom . q ubit . android . sdk . internal . callback tracker . repository . Callback Request Repository Ċ import Ġcom . q ubit . android . sdk . internal . common . logging . QB Logger Ċ import Ġcom . q ubit . android . sdk . internal . common . service . QB Service Ċ import Ġcom . q ubit . android . sdk . internal . network . Network State Service Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ class ĠCallback Request Tracker Impl ( ĊĠĠĠ Ġprivate Ġval Ġnetwork State Service : ĠNetwork State Service , ĊĠĠĠ Ġprivate Ġval Ġcallback Request Repository : ĠCallback Request Repository Ċ ) Ġ: ĠCallback Request Tracker , ĠQ B Service ( SERVICE _ NAME ) Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠSERVICE _ NAME Ġ= Ġ" Callback Request Tracker " ĊĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠQ B Logger . get For ( SERVICE _ NAME ) ĊĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL _ PLACE HOLDER Ġ= Ġ" http :// localhost /" ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcallback Request Api : ĠCallback Request API ĊĠ Ġprivate Ġval Ġnetwork State Listener : ĠNetwork State Service . Network State Listener ĊĠ Ġprivate Ġval Ġsend Request Task Ġ= ĠSend Request Task () ĊĊĠ Ġprivate Ġvar Ġis Connected Ġ= Ġfalse ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġcallback Request Api Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL _ PLACE HOLDER ) Ġ Ġ// Ġhttps :// stackoverflow . com / questions / 3 4 8 4 2 3 9 0 / how - to - setup - ret rofit - with - no - baseurl ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ. create ( Callback Request API :: class . java ) ĊĠĠĠ Ġnetwork State Listener Ġ= ĠNetwork State Service . Network State Listener Ġ{ ĊĠĠĠĠĠ Ġpost Task ( Network StateChange Task ( it )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġschedule Request ( url : ĠString ) Ġ{ ĊĠĠĠ Ġpost Task ( Schedule Request Task ( url )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠ Ġcallback Request Repository . init () ĊĠĠĠ Ġnetwork State Service . register Network State Listener ( network State Listener ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠ Ġnetwork State Service . unregister Network State Listener ( network State Listener ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsend Next Pending Request () Ġ{ ĊĠĠĠ Ġif Ġ( callback Request Repository . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġremove Task ( send Request Task ) ĊĠĠĠĠĠ Ġpost Task ( send Request Task ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠNetwork StateChange Task Ġconstructor ( ĊĠĠĠĠĠ Ġprivate Ġval Ġis Connected : ĠBoolean ĊĠ Ġ) Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠ ĠLOGGER . d (" Network Ġstate Ġchanged . ĠConnected : Ġ$ isConnected ") ĊĠĠĠĠĠ Ġthis @ Callback Request Tracker Impl . isConnected Ġ= Ġis Connected ĊĠĠĠĠĠ Ġif Ġ( isConnected ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Next Pending Request () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠSchedule Request Task ( ĊĠĠĠĠĠ Ġprivate Ġval Ġurl : ĠString ĊĠ Ġ) Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠ ĠLOGGER . d (" Scheduling Ġrequest Ġto Ġ$ url ") ĊĠĠĠĠĠ Ġcallback Request Repository . insert ( url ) ĊĠĠĠĠĠ Ġsend Next Pending Request () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠSend Request Task Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠ ĠLOGGER . d (" Send Ġcallback Ġrequest Ġtask ") ĊĊĠĠĠĠĠ Ġif Ġ(! this @ Callback Request Tracker Impl . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER . d (" Device Ġoffline Ġ- Ġabort ing ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcallback Request Repository . fetch First ()?. let Ġ{ Ġurl Ġ-> ĊĠĠĠĠĠĠĠ ĠLOGGER . d (" Sending Ġrequest Ġto Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġpost Request ( url ) ĊĠĠĠĠĠĠĠ Ġsend Next Pending Request () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost Request ( url : ĠString ) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcallback Request Api . post Callback Request ( url ). execute () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLOGGER . d (" Successfully Ġtriggered Ġplacement Ġcallback Ġto Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLOGGER . d (" Placement Ġcallback Ġto Ġ$ url Ġfailed Ġwith Ġerror Ġcode Ġ${ response . code () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER . e (" Failed Ġto Ġsend Ġplacement Ġcallback Ġto Ġ$ url ", Ġe ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ