33 lines
913 B
Nim
Raw Normal View History

2025-02-10 14:49:30 +01:00
import pkg/chronos
import pkg/questionable/results
2025-02-10 16:24:54 +01:00
import ./state
2025-02-11 14:02:30 +01:00
import ./metrics
2025-02-10 14:49:30 +01:00
import ./component
import ./components/dht
import ./components/crawler
import ./components/timetracker
2025-02-10 16:24:54 +01:00
import ./components/nodestore
2025-02-11 16:31:23 +01:00
import ./components/dhtmetrics
2025-02-10 14:49:30 +01:00
2025-02-10 16:24:54 +01:00
proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
2025-02-10 14:49:30 +01:00
var components: seq[Component] = newSeq[Component]()
2025-02-10 16:24:54 +01:00
without dht =? (await createDht(state)), err:
2025-02-10 14:49:30 +01:00
return failure(err)
2025-02-10 16:24:54 +01:00
without nodeStore =? createNodeStore(state), err:
return failure(err)
2025-02-11 14:02:30 +01:00
let metrics = createMetrics(state.config.metricsAddress, state.config.metricsPort)
2025-02-11 16:31:23 +01:00
without dhtMetrics =? createDhtMetrics(state, metrics), err:
return failure(err)
2025-02-10 16:24:54 +01:00
components.add(nodeStore)
2025-02-10 14:49:30 +01:00
components.add(dht)
2025-02-10 16:24:54 +01:00
components.add(Crawler.new(dht, state.config))
2025-02-11 16:31:23 +01:00
components.add(TimeTracker.new(state, nodeStore))
components.add(dhtMetrics)
2025-02-10 14:49:30 +01:00
return success(components)