package Ġcom . jon . cot beacon . service . em ergency Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġcom . jon . common . repositories . I Device Uid Repository Ċ import Ġcom . jon . common . repositories . IG ps Repository Ċ import Ġcom . jon . common . repositories . IS ocket Repository Ċ import Ġcom . jon . common . service . IT hread Error Listener Ċ import Ġcom . jon . common . service . Thread Manager Ċ import Ġcom . jon . common . utils . Protocol Ċ import Ġcom . jon . common . utils . exhaustive Ċ import Ġcom . jon . cot beacon . cot . E mergency Type Ċ import Ġcom . jon . cot beacon . service . em ergency . run n ables . Ssl E mergency Runnable Ċ import Ġcom . jon . cot beacon . service . em ergency . run n ables . Tcp E mergency Runnable Ċ import Ġcom . jon . cot beacon . service . em ergency . run n ables . Udp E mergency Runnable Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . Executors Ċ Ċ class ĠE mergency Thread Manager ( ĊĠĠĠĠĠĠĠ Ġprefs : ĠSharedPreferences , ĊĠĠĠĠĠĠĠ Ġerror Listener : ĠI Thread Error Listener , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdevice Uid Repository : ĠI Device Uid Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsocket Repository : ĠIS ocket Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgps Repository : ĠIG ps Repository Ċ ) Ġ: ĠThread Manager ( prefs , Ġerror Listener ), ĠI Thread Error Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmain Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprivate Ġval Ġexecutor Ġ= ĠExec utors . new Cached ThreadPool () ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠNo - op Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠNo - op Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrestart () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠNo - op Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Running (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠThese Ġare Ġone - and - done Ġtasks , Ġso Ġwe Ġwon 't Ġbe Ġsat Ġstill Ġin Ġa Ġ" running " Ġstate Ġ*/ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( prefs : ĠSharedPreferences , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠNo - op Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Thread Error ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Listener . on Thread Error ( throwable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend E mergency ( em ergency Type : ĠE mergency Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Sending Ġem ergency Ġ${ em ergency Type . description }") ĊĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunnable Ġ= Ġwhen Ġ( Protocol . from Prefs ( prefs )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol . UDP Ġ-> ĠU dp E mergency Runnable ( prefs , Ġerror Listener , Ġsocket Repository , Ġgps Repository , Ġdevice Uid Repository , Ġem ergency Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol . TCP Ġ-> ĠTcp E mergency Runnable ( prefs , Ġerror Listener , Ġsocket Repository , Ġgps Repository , Ġdevice Uid Repository , Ġem ergency Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol . SSL Ġ-> ĠS sl E mergency Runnable ( prefs , Ġerror Listener , Ġsocket Repository , Ġgps Repository , Ġdevice Uid Repository , Ġem ergency Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. exhaustive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor . execute ( run nable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }