2025-02-11 14:02:30 +01:00

28 lines
761 B
Nim

import pkg/chronos
import pkg/questionable/results
import ./state
import ./metrics
import ./component
import ./components/dht
import ./components/crawler
import ./components/timetracker
import ./components/nodestore
proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
var components: seq[Component] = newSeq[Component]()
without dht =? (await createDht(state)), err:
return failure(err)
without nodeStore =? createNodeStore(state), err:
return failure(err)
let metrics = createMetrics(state.config.metricsAddress, state.config.metricsPort)
components.add(nodeStore)
components.add(dht)
components.add(Crawler.new(dht, state.config))
components.add(TimeTracker.new(state.config))
return success(components)