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-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-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)
|
|
|
|
|
|
|
|
|
|
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))
|
|
|
|
|
components.add(TimeTracker.new(state.config))
|
2025-02-10 14:49:30 +01:00
|
|
|
return success(components)
|