Add first cut at a pool

This commit is contained in:
2026-01-01 15:43:49 -06:00
parent 8722062f4a
commit f504576f3e
6 changed files with 232 additions and 43 deletions

View File

@@ -1,23 +1,33 @@
package main
import (
// "context"
"fmt"
"os"
"os/signal"
// "sync"
"strconv"
"syscall"
)
func main() {
// var program1 = os.Getenv("BUILD_COMMAND")
//var program2 = os.Getenv("RUN_COMMAND")
watchedDir := os.Getenv("WATCHED_DIR")
var watchedDir = os.Getenv("WATCHED_DIR")
numChildProcesses := 1
if n, err := strconv.Atoi(os.Getenv("NUM_CHILD_PROCESSES")); err == nil && n > 0 {
numChildProcesses = n
}
// Create context for graceful shutdown
// ctx, cancel := context.WithCancel(context.Background())
//defer cancel()
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)
@@ -27,24 +37,16 @@ func main() {
go watchFiles(watchedDir, fileChanges)
go runExpress(fileChanges)
go runExpress(fileChanges, numChildProcesses, basePort, pool)
// WaitGroup to track both processes
// var wg sync.WaitGroup
// Start both processes
//wg.Add(2)
// go runProcess(ctx, &wg, "builder", program1)
// go runProcess(ctx, &wg, "runner", program2)
// 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...")
// Cancel context to signal goroutines to stop
/// cancel()
// Wait for both processes to finish
// wg.Wait()
fmt.Println("All processes terminated cleanly")
}