Creating sources

Sources can be created using one of the many factory methods on the Source companion object, e.g.:

import ox.supervised
import ox.channels.Source

import scala.concurrent.duration.*

supervised {
  Source.fromValues(1, 2, 3)
  Source.tick(1.second, "x")
  Source.iterate(0)(_ + 1) // natural numbers
}

Each such source creates a daemon fork, which takes care of sending the elements to the channel, once capacity is available.