From cd0647836ed9ce3f70b49e276638c55e3559764f Mon Sep 17 00:00:00 2001 From: Michael Hohn Date: Sun, 16 Jun 2024 10:31:52 -0700 Subject: [PATCH] Combine New/Setup functions --- cmd/server/main.go | 45 +++++++++++++++------------------------- pkg/agent/agent.go | 8 ++----- pkg/logger/types.go | 8 +++---- pkg/queue/types.go | 9 ++++---- pkg/server/server.go | 5 ----- pkg/server/types.go | 12 +++++++++-- pkg/storage/container.go | 16 +++++++------- pkg/storage/storage.go | 7 +++---- 8 files changed, 47 insertions(+), 63 deletions(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index c203200..8aaf979 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -68,19 +68,16 @@ func main() { // Apply 'mode' flag switch *mode { case "standalone": - // XX: combine New/Setup functions? - // Assemble single-process version - sl := logger.NewLoggerSingle() - sl.Setup(&logger.Visibles{}) - sq := queue.NewQueueSingle(2) // FIXME take value from configuration - sq.Setup(&queue.Visibles{ + sl := logger.NewLoggerSingle(&logger.Visibles{}) + + // FIXME take value from configuration + sq := queue.NewQueueSingle(2, &queue.Visibles{ Logger: sl, }) - ss := storage.NewStorageSingle(config.Storage.StartingID) - ss.Setup(&storage.Visibles{}) + ss := storage.NewStorageSingle(config.Storage.StartingID, &storage.Visibles{}) qp, err := qpstore.NewStore(config.Storage.StartingID) if err != nil { @@ -88,14 +85,13 @@ func main() { os.Exit(1) } - ql, err := storage.NewQLDBStore(config.Storage.StartingID) + ql, err := storage.NewQLDBStore(config.Storage.StartingID, &storage.Visibles{}) if err != nil { slog.Error("Unable to initialize ql database storage") os.Exit(1) } - sc := server.NewCommanderSingle() - sc.Setup(&server.Visibles{ + server.NewCommanderSingle(&server.Visibles{ Logger: sl, Queue: sq, ServerStore: ss, @@ -103,8 +99,8 @@ func main() { QLDBStore: ql, }) - sr := agent.NewAgentSingle(2, sq) // FIXME take value from configuration - sr.Setup(&agent.Visibles{ + // FIXME take value from configuration + agent.NewAgentSingle(2, &agent.Visibles{ Logger: sl, Queue: sq, QueryPackStore: qp, @@ -112,23 +108,19 @@ func main() { }) case "container": - // XX: combine New/Setup functions? - // Assemble container version - sl := logger.NewLoggerSingle() - sl.Setup(&logger.Visibles{}) + sl := logger.NewLoggerSingle(&logger.Visibles{}) - sq := queue.NewQueueSingle(2) // FIXME take value from configuration - sq.Setup(&queue.Visibles{ + // FIXME take value from configuration + sq := queue.NewQueueSingle(2, &queue.Visibles{ Logger: sl, }) - ss, err := storage.NewServerStore(config.Storage.StartingID) + ss, err := storage.NewServerStore(config.Storage.StartingID, &storage.Visibles{}) if err != nil { slog.Error("Unable to initialize server storage") os.Exit(1) } - ss.Setup(&storage.Visibles{}) qp, err := qpstore.NewStore(config.Storage.StartingID) if err != nil { @@ -136,23 +128,20 @@ func main() { os.Exit(1) } - ql, err := storage.NewQLDBStore(config.Storage.StartingID) + ql, err := storage.NewQLDBStore(config.Storage.StartingID, &storage.Visibles{}) if err != nil { slog.Error("Unable to initialize ql database storage") os.Exit(1) } - ql.Setup(&storage.Visibles{}) - sr := agent.NewAgentSingle(2, sq) // FIXME take value from configuration - sr.Setup(&agent.Visibles{ + agent.NewAgentSingle(2, &agent.Visibles{ Logger: sl, Queue: sq, QueryPackStore: qp, QLDBStore: ql, }) - sc := server.NewCommanderContainer() - sc.Setup(&server.Visibles{ + server.NewCommanderContainer(&server.Visibles{ Logger: sl, Queue: sq, ServerStore: ss, @@ -161,7 +150,7 @@ func main() { }) case "cluster": - // Assemble cccluster + // Assemble cluster version default: slog.Error("Invalid value for --mode. Allowed values are: standalone, container, cluster\n") os.Exit(1) diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index 3898960..7fefd9b 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -24,8 +24,8 @@ type RunnerSingle struct { queue queue.Queue } -func NewAgentSingle(numWorkers int, queue queue.Queue) *RunnerSingle { - r := RunnerSingle{queue: queue} +func NewAgentSingle(numWorkers int, av *Visibles) *RunnerSingle { + r := RunnerSingle{queue: av.Queue} for id := 1; id <= numWorkers; id++ { go r.worker(id) @@ -42,10 +42,6 @@ type Visibles struct { QLDBStore storage.Storage } -func (c *RunnerSingle) Setup(st *Visibles) { - return -} - func (r *RunnerSingle) worker(wid int) { var job common.AnalyzeJob diff --git a/pkg/logger/types.go b/pkg/logger/types.go index dd08e48..2980aef 100644 --- a/pkg/logger/types.go +++ b/pkg/logger/types.go @@ -4,13 +4,11 @@ type LoggerSingle struct { modules *Visibles } -func NewLoggerSingle() *LoggerSingle { +func NewLoggerSingle(v *Visibles) *LoggerSingle { l := LoggerSingle{} + + l.modules = v return &l } type Visibles struct{} - -func (l *LoggerSingle) Setup(v *Visibles) { - l.modules = v -} diff --git a/pkg/queue/types.go b/pkg/queue/types.go index ad45c37..cb7ebef 100644 --- a/pkg/queue/types.go +++ b/pkg/queue/types.go @@ -16,14 +16,13 @@ type Visibles struct { Logger logger.Logger } -func (q *QueueSingle) Setup(v *Visibles) { - q.modules = v -} - -func NewQueueSingle(numWorkers int) *QueueSingle { +func NewQueueSingle(numWorkers int, v *Visibles) *QueueSingle { q := QueueSingle{} q.jobs = make(chan common.AnalyzeJob, 10) q.results = make(chan common.AnalyzeResult, 10) q.NumWorkers = numWorkers + + q.modules = v + return &q } diff --git a/pkg/server/server.go b/pkg/server/server.go index 3894b15..da7132f 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -21,11 +21,6 @@ import ( "github.com/gorilla/mux" ) -func (c *CommanderSingle) Setup(st *Visibles) { - c.st = st - setupEndpoints(c) -} - func setupEndpoints(c CommanderAPI) { r := mux.NewRouter() diff --git a/pkg/server/types.go b/pkg/server/types.go index 59d59f0..b7c17b2 100644 --- a/pkg/server/types.go +++ b/pkg/server/types.go @@ -29,8 +29,12 @@ type CommanderSingle struct { st *Visibles } -func NewCommanderSingle() *CommanderSingle { +func NewCommanderSingle(st *Visibles) *CommanderSingle { c := CommanderSingle{} + + c.st = st + setupEndpoints(&c) + return &c } @@ -38,8 +42,12 @@ type CommanderContainer struct { st *Visibles } -func NewCommanderContainer() *CommanderContainer { +func NewCommanderContainer(st *Visibles) *CommanderContainer { c := CommanderContainer{} + + c.st = st + setupEndpoints(&c) + return &c } diff --git a/pkg/storage/container.go b/pkg/storage/container.go index 0115d4b..cfe5d24 100644 --- a/pkg/storage/container.go +++ b/pkg/storage/container.go @@ -32,13 +32,7 @@ func (s *StorageContainer) FindAvailableDBs(analysisReposRequested []common.Owne return notFoundRepos, analysisRepos } -func (s *StorageContainer) Setup(v *Visibles) { - // TODO XX: set up qldb_db - s.modules = v - -} - -func NewQLDBStore(startingID int) (*StorageContainer, error) { +func NewQLDBStore(startingID int, v *Visibles) (*StorageContainer, error) { // TODO drop the startingID db, err := ConnectDB(DBSpec{ Host: "postgres", @@ -61,10 +55,13 @@ func NewQLDBStore(startingID int) (*StorageContainer, error) { return nil, err } + // TODO XX: set up qldb_db + s.modules = v + return &s, nil } -func NewServerStore(startingID int) (*StorageContainer, error) { +func NewServerStore(startingID int, v *Visibles) (*StorageContainer, error) { db, err := ConnectDB(DBSpec{ Host: "postgres", Port: 5432, @@ -85,6 +82,9 @@ func NewServerStore(startingID int) (*StorageContainer, error) { return nil, err } + // TODO XX: set up qldb_db + s.modules = v + return &s, nil } diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index cfb19f9..9ed34fe 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -23,13 +23,12 @@ var ( mutex sync.Mutex ) -func NewStorageSingle(startingID int) *StorageSingle { +func NewStorageSingle(startingID int, v *Visibles) *StorageSingle { s := StorageSingle{currentID: startingID} - return &s -} -func (s *StorageSingle) Setup(v *Visibles) { s.modules = v + + return &s } func (s *StorageSingle) NextID() int {