Foundation.Logic.EventLogic (foundation v0.1.0)

Pure business logic functions for event operations.

Contains event creation, transformation, and analysis logic. No side effects - all functions are pure and easily testable.

Summary

Functions

Calculate the serialized size of an event.

Create a new event with the given parameters.

Deserialize an event from binary format.

Extract correlation chain from a list of events.

Group events by correlation ID.

Serialize an event to binary format.

Transform event data using a transformation function.

Types

event_opts()

@type event_opts() :: keyword()

serialization_opts()

@type serialization_opts() :: keyword()

Functions

calculate_serialized_size(event)

@spec calculate_serialized_size(Foundation.Types.Event.t()) ::
  {:ok, non_neg_integer()} | {:error, Foundation.Types.Error.t()}

Calculate the serialized size of an event.

create_event(event_type, data, opts \\ [])

@spec create_event(atom(), term(), event_opts()) ::
  {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}

Create a new event with the given parameters.

create_function_entry(module, function, arity, args, opts \\ [])

@spec create_function_entry(module(), atom(), arity(), [term()], event_opts()) ::
  {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}

Create a function entry event.

create_function_exit(module, function, arity, call_id, result, duration_ns, exit_reason)

@spec create_function_exit(
  module(),
  atom(),
  arity(),
  pos_integer(),
  term(),
  non_neg_integer(),
  atom()
) :: {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}

Create a function exit event.

create_state_change(server_pid, callback, old_state, new_state, opts \\ [])

@spec create_state_change(pid(), atom(), term(), term(), event_opts()) ::
  {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}

Create a state change event.

deserialize_event(binary)

@spec deserialize_event(binary()) ::
  {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}

Deserialize an event from binary format.

extract_correlation_chain(events, correlation_id)

@spec extract_correlation_chain([Foundation.Types.Event.t()], String.t()) :: [
  Foundation.Types.Event.t()
]

Extract correlation chain from a list of events.

filter_by_time_range(events, start_time, end_time)

@spec filter_by_time_range([Foundation.Types.Event.t()], integer(), integer()) :: [
  Foundation.Types.Event.t()
]

Filter events by time range.

group_by_correlation(events)

@spec group_by_correlation([Foundation.Types.Event.t()]) :: %{
  required(String.t()) => [Foundation.Types.Event.t()]
}

Group events by correlation ID.

serialize_event(event, opts \\ [])

@spec serialize_event(Foundation.Types.Event.t(), serialization_opts()) ::
  {:ok, binary()} | {:error, Foundation.Types.Error.t()}

Serialize an event to binary format.

transform_event_data(event, transform_fn)

@spec transform_event_data(Foundation.Types.Event.t(), (term() -> term())) ::
  Foundation.Types.Event.t()

Transform event data using a transformation function.