# `ActorSimulation.Definition`
[🔗](https://github.com/d-led/gen_server_virtual_time/blob/v1.1.1/packages/actor_simulation/lib/actor_simulation/definition.ex#L1)

Defines an actor's behavior in the simulation.

## Example

    iex> definition = ActorSimulation.Definition.new(:worker,
    ...>   send_pattern: {:periodic, 100, :tick},
    ...>   targets: [:supervisor])
    iex> definition.name
    :worker
    iex> definition.targets
    [:supervisor]

# `interval_for_pattern`

Calculates the interval in milliseconds for a send pattern.

## Examples

    iex> ActorSimulation.Definition.interval_for_pattern({:periodic, 100, :msg})
    100

    iex> ActorSimulation.Definition.interval_for_pattern({:rate, 10, :msg})
    100

    iex> ActorSimulation.Definition.interval_for_pattern({:burst, 5, 500, :msg})
    500

    iex> ActorSimulation.Definition.interval_for_pattern({:self_message, 200, :timeout})
    200

# `match_message`

Matches a message against the on_match patterns and returns the response.
Returns nil if no match.

# `messages_for_pattern`

Gets the message(s) to send for a send pattern.

## Examples

    iex> ActorSimulation.Definition.messages_for_pattern({:periodic, 100, :tick})
    [:tick]

    iex> ActorSimulation.Definition.messages_for_pattern({:burst, 3, 500, :event})
    [:event, :event, :event]

    iex> ActorSimulation.Definition.messages_for_pattern({:self_message, 200, :timeout})
    [:timeout]

# `new`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
