forked from quantanotes/starfleet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstarfleet.go
40 lines (32 loc) · 1.12 KB
/
starfleet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main
import (
"net/http"
"github.com/rs/zerolog/log"
)
type StarFleetConfig struct {
Middleware MiddlewareConfig `json:"middleware"`
Workers []WorkerConfig `json:"workers"`
}
type StarFleet struct {
middleware Middleware
requestCounter RequestCounterMiddleware
workerPool WorkerPool
}
func New(config StarFleetConfig) *StarFleet {
return &StarFleet{
middleware: NewMiddleware(config.Middleware),
requestCounter: NewRequestCounterMiddleware(),
workerPool: NewWorkerPool(config.Workers),
}
}
func (sf *StarFleet) Run() {
sf.workerPool.Run()
http.HandleFunc("/dashboard", sf.handleDashboard)
http.HandleFunc("/dashboard-stats", sf.handleDashboardStats)
http.HandleFunc("/dashboard-request-counter", sf.handleDashboardRequestCounter)
http.HandleFunc("/dashboard-revive/", sf.handleDashboardRevive)
http.HandleFunc("/generate", sf.middleware.Middleware(sf.requestCounter.Middleware(sf.handleGenerate)))
http.HandleFunc("/queue", sf.handleQueue)
log.Info().Msg("Listening on port :8080")
log.Fatal().Err(http.ListenAndServe(":8080", nil)).Msg("fatal error has occurred on port :8080")
}