Packages
event_bus
1.6.2
1.7.0
1.6.2
1.6.1
1.6.0
retired
1.5.2
retired
1.5.1
retired
1.5.0
retired
1.4.4
retired
1.4.3
retired
1.4.2
retired
1.4.1
retired
1.4.0
retired
1.3.8
retired
1.3.7
retired
1.3.6
retired
1.3.5
retired
1.3.4
retired
1.3.3
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.0
retired
1.1.3
retired
1.1.2
retired
1.1.1
retired
1.1.0
retired
1.0.0
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
1.0.0-beta1
retired
0.9.0
retired
0.8.0
retired
0.7.0
retired
0.6.1
retired
0.6.0
retired
0.5.0
retired
0.4.1
retired
0.4.0
retired
0.3.1
retired
0.3.0
retired
0.2.1
retired
0.2.0
retired
0.1.0
retired
Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS
Current section
Files
Jump to
Current section
Files
lib/event_bus/models/event.ex
defmodule EventBus.Model.Event do
@moduledoc """
Structure and type for Event model
"""
@enforce_keys [:id, :topic, :data]
defstruct [
:id,
:transaction_id,
:topic,
:data,
:initialized_at,
:occurred_at,
:source,
:ttl
]
@typedoc """
Definition of the Event struct
* :id - Identifier
* :transaction_id - Transaction identifier, if event belongs to a transaction
* :topic - Topic name
* :data - Context
* :initialized_at - When the process initialized to generate this event
* :occurred_at - When it is occurred
* :source - Who created this event: module, function or service name are good
* :ttl - Time to live value
"""
@type t :: %__MODULE__{
id: String.t() | integer(),
transaction_id: String.t() | integer() | nil,
topic: atom(),
data: any(),
initialized_at: integer() | nil,
occurred_at: integer() | nil,
source: String.t() | nil,
ttl: integer() | nil
}
@doc """
Calculate the duration of the event, and simple answer of how long does it
take to generate this event
"""
@spec duration(__MODULE__.t()) :: integer()
def duration(%__MODULE__{
initialized_at: initialized_at,
occurred_at: occurred_at
})
when is_integer(initialized_at) and is_integer(occurred_at) do
occurred_at - initialized_at
end
def duration(%__MODULE__{}) do
0
end
end