A Go module for managing the lifecycle of standard daemons with network listeners.
package main
import (
"log"
"net"
"github.com/KarpelesLab/lifecycle"
)
func main() {
// Create a new daemon
daemon := lifecycle.New()
// Set up a TCP listener
err := daemon.SetListener("tcp",
func() (net.Listener, error) {
return net.Listen("tcp", ":8080")
},
func(conn net.Conn) error {
// Handle connection
return nil
},
)
if err != nil {
log.Fatalf("Failed to set listener: %v", err)
}
// Start the daemon
if err := daemon.Start(); err != nil {
log.Fatalf("Failed to start daemon: %v", err)
}
// ... your application logic ...
// Gracefully shut down
if err := daemon.Stop(); err != nil {
log.Fatalf("Failed to stop daemon: %v", err)
}
}