diff options
Diffstat (limited to '')
-rw-r--r-- | golang/pkg/agent/run.go | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/golang/pkg/agent/run.go b/golang/pkg/agent/run.go index 1d70be8..0591102 100644 --- a/golang/pkg/agent/run.go +++ b/golang/pkg/agent/run.go @@ -11,7 +11,7 @@ import ( ) type agent struct { - channel chan shipError + channel chan error client *api.Client db *database.DB getenv func(string) string @@ -23,7 +23,8 @@ type State int const ( start_running_contracts_with_the_command_ship = iota - visit_all_shipyards + visit_all_shipyards_with_the_starting_probe + send_the_starting_probe_to_a_shipyard_that_sells_probes ) func Run( @@ -32,7 +33,7 @@ func Run( getenv func(string) string, ) error { agent := agent{ - channel: make(chan shipError), + channel: make(chan error), client: client, db: db, getenv: getenv, @@ -43,7 +44,7 @@ func Run( } if agent.ships, err = client.MyShips(); err != nil { - return fmt.Errorf("failed to init the agent's ships: %w", err) + return fmt.Errorf("failed to get my ships: %w", err) } var state State = start_running_contracts_with_the_command_ship agent.wg.Add(1) @@ -55,14 +56,20 @@ func Run( agent.wg.Add(1) go agent.autoContracting(&agent.ships[0]) state++ - case visit_all_shipyards: + case visit_all_shipyards_with_the_starting_probe: if err := agent.visitAllShipyards(&agent.ships[1]); err != nil { - agent.sendShipError(fmt.Errorf("agent runner returned an error on state %d: %w", state, err), &agent.ships[1]) + agent.channel <- fmt.Errorf("failed to visit all shipyards with ship %s: %w", agent.ships[1].Symbol, err) + return + } + state++ + case send_the_starting_probe_to_a_shipyard_that_sells_probes: + if err := agent.sendShipToShipyardThatSells(&agent.ships[1], "SHIP_PROBE"); err != nil { + agent.channel <- fmt.Errorf("failed to send the starting probe to a shipyard that sells probes: %w", err) + return } state++ - return default: - agent.sendShipError(fmt.Errorf("agent runner reach an unknown state: %d", state), nil) + agent.channel <- fmt.Errorf("state not implemented: %d", state) return } } @@ -71,8 +78,8 @@ func Run( errWg.Add(1) go func() { defer errWg.Done() - for shipErr := range agent.channel { - slog.Error("ship error", "err", shipErr.err, "ship", shipErr.ship.Symbol) + for err := range agent.channel { + slog.Error("agent run error", "err", err) } }() agent.wg.Wait() |