Files
diachron/master/main.go
2026-01-01 16:53:00 -06:00

52 lines
1.0 KiB
Go

package main
import (
"fmt"
"os"
"os/signal"
"strconv"
"syscall"
)
func main() {
watchedDir := os.Getenv("WATCHED_DIR")
numChildProcesses := 1
if n, err := strconv.Atoi(os.Getenv("NUM_CHILD_PROCESSES")); err == nil && n > 0 {
numChildProcesses = n
}
basePort := 3000
if p, err := strconv.Atoi(os.Getenv("BASE_PORT")); err == nil && p > 0 {
basePort = p
}
listenPort := 8080
if p, err := strconv.Atoi(os.Getenv("LISTEN_PORT")); err == nil && p > 0 {
listenPort = p
}
// Create worker pool
pool := NewWorkerPool()
// Setup signal handling
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
fileChanges := make(chan FileChange, 10)
go watchFiles(watchedDir, fileChanges)
go runExpress(fileChanges, numChildProcesses, basePort, pool)
// Start the reverse proxy
listenAddr := fmt.Sprintf(":%d", listenPort)
go startProxy(listenAddr, pool)
// Wait for interrupt signal
<-sigCh
fmt.Println("\nReceived interrupt signal, shutting down...")
fmt.Println("All processes terminated cleanly")
}