src/main.oxl
use self.orders { Orders, relayStats }
use self.limits { STATS_PERIOD }
use std.time { every }
// main выполняется на узле после старта ролей; узел работает, пока размещает сервисы и фоновые задачи.
// ОТКЛОНЕНИЕ (DEVIATIONS.md #7): статистику считает внутренний rpc `Orders.publishStats` (в V.5 — `computeStats(&db)` прямо здесь:
// модульный `dep db` в `main` не реализован); он публикует её в топик StatsUpdates, как в V.5.
fn main() net, time {
// Задача-лидер: выполняется ровно на одном узле с `runs leader("stats")` (роль saga); при его падении — на другом
cluster.leader("stats") {
every(STATS_PERIOD) { _ = Orders.publishStats() }
}
// На каждом узле api: одна подписка на топик → локальный broadcast → все клиенты узла
if cluster.hasRole("api") {
node.background.spawn {
_ = relayStats()
}
}
}Исходник: examples/shop/src/main.oxl