MCPcopy Create free account
hub / github.com/dim-an/cod / daemonProc

Function daemonProc

daemon.go:83–130  ·  view source on GitHub ↗
(configuration server.Configuration, pidToNotify int)

Source from the content-addressed store, hash-verified

81}
82
83func daemonProc(configuration server.Configuration, pidToNotify int) {
84 err := os.Chdir("/")
85 verifyFatal(err)
86
87 log.SetPrefix(fmt.Sprintf("%v ", os.Getpid()))
88 log.Printf("Starting daemon. Version: %q", Version)
89
90 lockFileName := configuration.GetLockFile()
91 lockFileFd, err := unix.Open(lockFileName, os.O_CREATE|os.O_RDWR, 0600)
92 verifyFatal(err)
93
94 pidStr := []byte(strconv.Itoa(os.Getpid()))
95 _, err = unix.Write(lockFileFd, pidStr)
96 if err != nil {
97 log.Panic(fmt.Errorf("cannot write to %s: %w", lockFileName, err))
98 }
99
100 log.Printf("Locking file: %s", lockFileName)
101 err = unix.Flock(lockFileFd, unix.LOCK_EX|unix.LOCK_NB)
102 if err != nil {
103 log.Panic(fmt.Errorf("cannot lock file %s: %w", lockFileName, err))
104 }
105
106 log.Printf("Removing old unix socket")
107 socketFile := configuration.GetSocketFile()
108 err = cleanFile(socketFile)
109 if err != nil {
110 log.Panic(fmt.Errorf("cannot remove %s: %w", socketFile, err))
111 }
112
113 log.Printf("Launching server")
114 s, err := server.NewServer(&configuration)
115 verifyFatal(err)
116 defer func() {
117 err = s.Close()
118 verifyFatal(err)
119 }()
120
121 if pidToNotify != 0 {
122 err = unix.Kill(pidToNotify, unix.SIGUSR1)
123 }
124
125 err = s.Serve()
126 verifyFatal(err)
127
128 log.Printf("Daemon is exiting normally")
129 os.Exit(0)
130}
131
132func forkedDaemonMain(pidToNotify int) {
133 configuration, err := server.DefaultConfiguration()

Callers 2

daemonMainFunction · 0.85
forkedDaemonMainFunction · 0.85

Calls 7

CloseMethod · 0.95
ServeMethod · 0.95
NewServerFunction · 0.92
verifyFatalFunction · 0.85
cleanFileFunction · 0.85
GetLockFileMethod · 0.80
GetSocketFileMethod · 0.80

Tested by

no test coverage detected