Flexflow.Process behaviour (flexflow v0.2.0) View Source
Process
Link to this section Summary
Types
Init result
Link to this section Types
Specs
action() :: :gen_statem.action()
Specs
definition() ::
{:states, Flexflow.state_key()}
| {:events, {Flexflow.state_key(), Flexflow.state_key()}}
Specs
event_result() :: :ignore | result() | {:ok, Flexflow.State.t()} | {:ok, Flexflow.State.t(), [action()]}
Specs
event_type() :: :gen_statem.event_type()
Specs
process_tuple() :: {module(), Flexflow.name()}
Specs
Init result
Specs
state_result() :: :ignore | result() | {:ok, Flexflow.State.t()}
Specs
t() :: %Flexflow.Process{
__actions__: [action()],
__args__: Flexflow.process_args(),
__counter__: integer(),
__definitions__: [definition()],
__listeners__: %{
required(Flexflow.EventDispatcher.listener()) =>
Flexflow.EventDispatcher.listen_result()
},
__loop__: integer(),
__opts__: Keyword.t(),
__tasks__: %{required(reference()) => term()},
__vsn__: [{module(), term()}],
childs: [Flexflow.process_key()],
context: Flexflow.Context.t(),
events: %{required(Flexflow.state_key()) => Flexflow.Event.t()},
id: Flexflow.id() | nil,
module: module(),
name: Flexflow.name(),
parent: Flexflow.process_key(),
request_id: String.t(),
state: Flexflow.state_key(),
states: %{required(Flexflow.state_key()) => Flexflow.State.t()}
}
Link to this section Functions
Specs
handle_event(:enter, Flexflow.state_key(), t()) :: result()
handle_event(event_type(), term(), t()) :: result()
Specs
init(module(), Flexflow.id(), Flexflow.process_args()) :: result()
Specs
new(module(), Flexflow.id(), Flexflow.process_args()) :: {:ok, t()}