diff --git a/cmd/commander/main.go b/cmd/commander/main.go index 9fd286c..d6d97bf 100644 --- a/cmd/commander/main.go +++ b/cmd/commander/main.go @@ -57,7 +57,7 @@ func main() { } // Read configuration - config := mcc.LoadConfig("cconfig.toml") + config := mcc.LoadConfig("mcconfig.toml") // Output configuration summary log.Printf("Help: %t\n", *helpFlag) @@ -69,13 +69,13 @@ func main() { case "standalone": // Assemble single-process version state := mci.State{ - Commander: lcmem.Commander{}, - Logger: llmem.Logger{}, - Queue: lqmem.Queue{}, - Storage: lsmem.Storage{}, - Runner: lrmem.Runner{}, + Commander: &lcmem.Commander{}, + Logger: &llmem.Logger{}, + Queue: &lqmem.Queue{}, + Storage: &lsmem.Storage{CurrentID: config.Storage.StartingID}, + Runner: &lrmem.Runner{}, } - main := lcmem.Commander{} + main := &lcmem.Commander{} main.Setup(state) main.Run(state) diff --git a/cmd/commander/cconfig.toml b/cmd/commander/mcconfig.toml similarity index 71% rename from cmd/commander/cconfig.toml rename to cmd/commander/mcconfig.toml index 543c318..2d2a105 100644 --- a/cmd/commander/cconfig.toml +++ b/cmd/commander/mcconfig.toml @@ -2,4 +2,5 @@ [logger] [queue] [storage] +StartingID = 54673 [runner] diff --git a/config/mcc/storage.go b/config/mcc/storage.go index 32f74cf..9b3d49c 100644 --- a/config/mcc/storage.go +++ b/config/mcc/storage.go @@ -1,4 +1,5 @@ package mcc type Storage struct { + StartingID int } diff --git a/config/mcc/system.go b/config/mcc/system.go index 734083b..1821f44 100644 --- a/config/mcc/system.go +++ b/config/mcc/system.go @@ -8,11 +8,11 @@ import ( ) type System struct { - commander Commander - logger Logger - queue Queue - storage Storage - runner Runner + Commander Commander + Logger Logger + Queue Queue + Storage Storage + Runner Runner } func LoadConfig(fname string) *System { diff --git a/interfaces/mci/storage.go b/interfaces/mci/storage.go index 2cd4af0..2af51fe 100644 --- a/interfaces/mci/storage.go +++ b/interfaces/mci/storage.go @@ -1,4 +1,5 @@ package mci type Storage interface { + NextID() int } diff --git a/lib/commander/lcmem/lcmem.go b/lib/commander/lcmem/lcmem.go index 96b9995..4628c66 100644 --- a/lib/commander/lcmem/lcmem.go +++ b/lib/commander/lcmem/lcmem.go @@ -18,6 +18,7 @@ import ( ) type Commander struct { + st mci.State // st points to this Commander instance. Circular, but needed. } func (c *Commander) Run(st mci.State) { @@ -25,6 +26,7 @@ func (c *Commander) Run(st mci.State) { func (c *Commander) Setup(st mci.State) { r := mux.NewRouter() + c.st = st // // First are the API endpoints that mirror those used in the github API @@ -197,12 +199,15 @@ func (c *Commander) MirvaRequest(w http.ResponseWriter, r *http.Request) { slog.Info("New mrva run ", "owner", vars["owner"], "repo", vars["repo"]) // TODO Change this to functional style? // session := new(MirvaSession) - // session.id = next_id() - // session.owner = vars["owner"] - // session.controller_repo = vars["repo"] - // session.collect_info(w, r) - // session.find_available_DBs() - // session.start_analyses() - // session.submit_response(w) - // session.save() + session_id := c.st.Storage.NextID() + slog.Info("id: ", session_id) + // session_owner = vars["owner"] + // session_controller_repo = vars["repo"] + // session_collect_info(w, r) + + // session_find_available_DBs() + + // session_start_analyses() + // session_submit_response(w) + // session_save() } diff --git a/lib/storage/lsmem/localdisk.go b/lib/storage/lsmem/localdisk.go index 22a03d5..db36d9f 100644 --- a/lib/storage/lsmem/localdisk.go +++ b/lib/storage/lsmem/localdisk.go @@ -1,4 +1,10 @@ package lsmem type Storage struct { + CurrentID int +} + +func (s *Storage) NextID() int { + s.CurrentID += 1 + return s.CurrentID }