Packages
altworx_runbox
22.2.0
25.0.0
24.0.0
23.1.0
23.0.0
22.2.0
22.1.0
22.0.0
21.2.0
21.1.2
21.1.1
21.1.0
21.0.0
20.0.0
19.0.0
18.0.0
17.2.0
17.1.0
17.0.1
17.0.0
16.2.0
16.1.0
16.0.0
15.0.0
14.1.0
14.0.1
14.0.0
13.0.3
13.0.2
13.0.1
13.0.0
12.1.0
12.0.0
11.0.1
11.0.0
10.0.0
9.0.0
8.0.0
7.0.1
7.0.0
6.0.0
5.0.0
4.0.0
3.0.0
2.1.0
2.0.0
1.4.1
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.1.3
0.1.2
0.1.1
0.1.0
Runbox is a library for running Altworx scenarios.
Current section
Files
Jump to
Current section
Files
lib/runbox/message.ex
defmodule Runbox.Message do
@moduledoc group: :messages
@moduledoc """
Altworx message runtime representation.
"""
alias __MODULE__, as: Message
@derive Jason.Encoder
defstruct [:from, :type, :timestamp, :body, :origin]
@type from :: atom | String.t()
@type type :: atom | String.t()
@type timestamp :: integer
@type body :: term
@type origin :: %{offset: non_neg_integer, topic: String.t(), partition: non_neg_integer} | nil
@type t :: %Message{
from: from,
type: type,
timestamp: timestamp,
body: body,
origin: origin
}
@spec new(from, type, timestamp, body) :: t
def new(from, type, timestamp, body) do
%Message{from: from, type: type, timestamp: timestamp, body: body}
end
@spec from(t) :: from
def from(%Message{from: from}), do: from
@spec type(t) :: type
def type(%Message{type: type}), do: type
@spec timestamp(t) :: timestamp
def timestamp(%Message{timestamp: ts}) when is_integer(ts), do: ts
@spec body(t) :: body
def body(%Message{body: body}), do: body
end