Add first cut at a pool
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user