Combine New/Setup functions

This commit is contained in:
Michael Hohn
2024-06-16 10:31:52 -07:00
committed by =Michael Hohn
parent f611f02d1c
commit cd0647836e
8 changed files with 47 additions and 63 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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()

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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 {