* handleSignals listens for os Signals and calls any hooked in function that the user had registered with the signal. */
()
| 314 | user had registered with the signal. |
| 315 | */ |
| 316 | func (srv *endlessServer) handleSignals() { |
| 317 | var sig os.Signal |
| 318 | |
| 319 | signal.Notify( |
| 320 | srv.sigChan, |
| 321 | hookableSignals..., |
| 322 | ) |
| 323 | |
| 324 | pid := syscall.Getpid() |
| 325 | for { |
| 326 | sig = <-srv.sigChan |
| 327 | srv.signalHooks(PRE_SIGNAL, sig) |
| 328 | switch sig { |
| 329 | case syscall.SIGHUP: |
| 330 | log.Println(pid, "Received SIGHUP. forking.") |
| 331 | err := srv.fork() |
| 332 | if err != nil { |
| 333 | log.Println("Fork err:", err) |
| 334 | } |
| 335 | case syscall.SIGUSR1: |
| 336 | log.Println(pid, "Received SIGUSR1.") |
| 337 | case syscall.SIGUSR2: |
| 338 | log.Println(pid, "Received SIGUSR2.") |
| 339 | srv.hammerTime(0 * time.Second) |
| 340 | case syscall.SIGINT: |
| 341 | log.Println(pid, "Received SIGINT.") |
| 342 | srv.shutdown() |
| 343 | case syscall.SIGTERM: |
| 344 | log.Println(pid, "Received SIGTERM.") |
| 345 | srv.shutdown() |
| 346 | case syscall.SIGTSTP: |
| 347 | log.Println(pid, "Received SIGTSTP.") |
| 348 | default: |
| 349 | log.Printf("Received %v: nothing i care about...\n", sig) |
| 350 | } |
| 351 | srv.signalHooks(POST_SIGNAL, sig) |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | func (srv *endlessServer) signalHooks(ppFlag int, sig os.Signal) { |
| 356 | if _, notSet := srv.SignalHooks[ppFlag][sig]; !notSet { |
no test coverage detected