OxL Справочник OxL
РусскийEnglish

kw it

Контекстное слово — шаг цепочки или пайплайна (§8.4, §10.6)

Список слов: §1.4

Синтаксис

ebnf
Primary     = Literal | Path | "it" | "self" | "(" Expr { "," Expr } ")" | ListLit | MapLit
            | StructLit | Lambda | Block | If | Match | For | While | Loop | Scope | Select | Query
            | "spawn" ( Postfix | Block ) | "await" Unary | "atomic" [ "(" Args ")" ] Block
            | "return" [ Expr ] | "fail" Expr | "yield" Expr | "respond" Expr | "break" [ Label ] [ Expr ]
            | "continue" [ Label ] | "emit" Path "(" Expr ")" | "unsafe" Block | "blocking" Block
            | "comptime" Block | "." Ident [ "(" [ Args ] ")" ] ;

Грамматика: Прил. A

Определяется в

  • 10.6 Пайплайны — Пайплайн — линейная цепочка шагов, каждый из которых выполняется на своём узле; данные передаются от узла к узлу напрямую, вызывающий получа
  • 8.4 Цепочки — Цепочка связывает асинхронные шаги так, что выполняется либо вся цепочка, либо возвращается первая необработанная ошибка.
  • 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
  • 8.8 Локальные акторы — Сообщения обрабатываются строго по одному в порядке поступления от каждого отправителя.
  • 11.3 Саги — Сага — последовательность шагов (синтаксис шагов как в цепочке §8.4); после шага МОЖЕТ стоять undo x => компенсация, где x — результат шага.

Примеры

oxl
pipeline uploadPhoto(img: Image) -> PhotoId {
  validate
  -> Store.put(it)              on storage
  -> respond it.id
  -> resize(it, THUMB_SIZES)    on gpu
  -> moderate                   on ml  durable
  -> SearchIndex.add(it)
} on_error(e, step) { Dlq.push(e, step) }

— 10.6 Пайплайны

oxl
let page = Users.get(id)
  -> (Orders.recent(it.id), Recs.for(it.id))
  -> (orders, recs) => Page{ orders, recs }
  ~> Audit.log("page", id)
  !> Timeout => Page.empty()
  within PAGE_DEADLINE
  retry 2

let html = await page

— 8.4 Цепочки

Связанные диагностики

pipeline-idempotency, respond-twice, respond-type, unknown-role, it-outside-chain, actor-cycle, saga-decl, saga-idempotency

См. также