MCPcopy
hub / github.com/fvbock/endless / handleSignals

Method handleSignals

endless.go:316–353  ·  view source on GitHub ↗

* handleSignals listens for os Signals and calls any hooked in function that the user had registered with the signal. */

()

Source from the content-addressed store, hash-verified

314user had registered with the signal.
315*/
316func (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
355func (srv *endlessServer) signalHooks(ppFlag int, sig os.Signal) {
356 if _, notSet := srv.SignalHooks[ppFlag][sig]; !notSet {

Callers 2

ListenAndServeMethod · 0.95
ListenAndServeTLSMethod · 0.95

Calls 4

signalHooksMethod · 0.95
forkMethod · 0.95
hammerTimeMethod · 0.95
shutdownMethod · 0.95

Tested by

no test coverage detected