Flezha.SDK.Merge (flezha_sdk v0.1.0)

Copy Markdown View Source

A merged subscription under construction, built by Flezha.SDK.ChannelBuilder.merge/1: one tasklet fed by two or more source streams, each with the mapping that lifts its value into the merged input.

c
|> merge()
|> from(ticks, &{:tick, &1})
|> from(quotes, &{:quote, &1})
|> key_by(&symbol_of/1)
|> into(Detector)

Every step is Flezha.SDK.ChannelBuilder', dispatching on the handle it receives, so one import writes a whole pipe. This module is the handle they carry between them: the sources recorded so far, each already mapped, and the key the merged node is declared on. Every source the author wrote reaches the record, a repeated one included; flz_core's check is what names MergeTooFewSources and DuplicateMergeSource.

Summary

Types

t()

@type t() :: %Flezha.SDK.Merge{
  builder: reference(),
  keys: [(term() -> term())],
  sources: [Flezha.SDK.Stream.t()]
}