Runbox.Runtime.ComponentNetwork behaviour (runbox v9.0.0)

Component network builds and validates run component dependency network.

To build this network, module uses dependencies defined by the scenario.

Link to this section Summary

Functions

Creates base network with only template nodes

Main function. Given list of template modules, expands them into components network with input streams, timezips etc...

Return all input topic names that are being subscribed to in component network.

Link to this section Types

@type component() :: any()
@type t() :: any()

Link to this section Callbacks

Link to this callback

convert_to_network(list)

@callback convert_to_network([Runbox.ScenarioTemplate.t()]) :: t()
Link to this callback

create(list, t)

@callback create([Runbox.ScenarioTemplate.t()], Keyword.t()) ::
  {:ok, t()} | {:error, term()}
Link to this callback

input_topics(t)

@callback input_topics(t()) :: [String.t()]

Link to this section Functions

Link to this function

convert_to_network(scenario_type, scenario_templates)

@spec convert_to_network(Runbox.Scenario.Type.t(), [Runbox.ScenarioTemplate.t()]) ::
  t()

Creates base network with only template nodes

Link to this function

create(scenario_type, scenario_templates, opts \\ [])

@spec create(Runbox.Scenario.Type.t(), [Runbox.ScenarioTemplate.t()], Keyword.t()) ::
  {:ok, t()} | {:error, term()}

Main function. Given list of template modules, expands them into components network with input streams, timezips etc...

options

Options

  • :direct_ticking - if true (default), creates network using direct ticking
Link to this function

input_topics(scenario_type, component_network)

@spec input_topics(Runbox.Scenario.Type.t(), t()) :: [String.t()]

Return all input topic names that are being subscribed to in component network.

Link to this function

topology_sort(scenario_type, network)

@spec topology_sort(Runbox.Scenario.Type.t(), t()) :: [component()]