package Ġnet . sr 8 9 . hay stack er . server . handlers Ċ Ċ import Ġmu . Kotlin Logging Ċ import Ġnet . sr 8 9 . hay stack er . index . Index Manager Ċ import Ġnet . sr 8 9 . hay stack er . index . Index Manager Provider Ċ import Ġnet . sr 8 9 . hay stack er . server . async . task . Background Task Manager Ċ import Ġorg . http 4 k . core . Http Handler Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . http 4 k . core . Status Ċ import Ġorg . http 4 k . server . Http 4 k Server Ċ import Ġjava . time . Duration Ċ Ċ class ĠQu it Handler ( ĊĠĠĠ Ġprivate Ġval Ġindex Manager Provider : ĠIndex Manager Provider , ĊĠĠĠ Ġprivate Ġval Ġtask Manager : ĠBackground Task Manager , ĊĠĠĠ Ġprivate Ġval Ġshutdown Delay : ĠDuration Ċ ) Ġ: ĠHttp Handler Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġserver Instance : ĠHttp 4 k Server ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( request : ĠRequest ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Stopping Ġall Ġfilesystem Ġwatch ers " Ġ} ĊĠĠĠĠĠĠĠ Ġindex Manager Provider . getAll (). forEach ( Index Manager :: stop Watch ing FileSystem Changes ) ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Interrupt ing Ġall Ġrunning Ġbackground Ġtasks " Ġ} ĊĠĠĠĠĠĠĠ Ġtask Manager . shutdown And WaitFor Tasks To Complete () ĊĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Shut ting Ġdown Ġin Ġ${ shutdown Delay . to Millis ()} ms " Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcannot Ġuse Ġthe Ġtask Manager Ġitself Ġhere Ġbecause Ġwe Ġare Ġshut ting Ġit Ġdown ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( shutdown Delay . to Millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Instance . stop () ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġreturn ĠResponse ( Status . OK ) ĊĠĠĠ Ġ} Ċ }