Grains v0.1.2 Grains

Grains describes data flow as a graph with interchangeable parts.

To accomplish that grains divides the graph (Recipe) from the implementation of the nodes (Grains). Together these parts can be used to make a Bread which describes how the graph translates to processes. Each process has a symbolic short name, which is resolved to the registered name of the process via a map (%Bread{}.process_map).

Link to this section Summary

Functions

This function describes the default implementations for auxiliary grains, for example the periodic timer. Currently these default grains are provided

Merges to grain maps, works the same as Map.merge/2. Seconds grains override first in case of a name clash.

Link to this section Functions

Link to this function

concat_name(bread, grain)

concat_name(Grains.Bread.t(), atom()) :: atom()
Link to this function

default_grains()

This function describes the default implementations for auxiliary grains, for example the periodic timer. Currently these default grains are provided:

iex> Grains.default_grains()
%{periodic: Grains.Timer}
Link to this function

get_name(supervisor, short_name)

get_name(Grains.Supervisor.t(), atom()) :: atom()
Link to this function

make_bread_name(recipe, bread_id)

make_bread_name(Grains.Recipe.t(), atom()) :: atom()
Link to this function

make_name(recipe, bread_id, short_name)

make_name(Grains.Recipe.t(), atom(), atom()) :: atom()
Link to this function

merge(grains1, grains2)

Merges to grain maps, works the same as Map.merge/2. Seconds grains override first in case of a name clash.

Link to this function

merge_recipes(name, a, b)

See Grains.Recipe.merge/3.

Link to this function

new_recipe(name, new)

See Grains.Recipe.new/2.

Link to this function

periodic(grain, period, opts \\ %{with_timestamps: false})

Description of a periodic grain.

Link to this function

start_supervised(recipe, grains, args \\ [])

See Grains.Supervisor.start_link/3.