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.
Create a function entry event.
Create a function exit event.
Create a state change event.
Deserialize an event from binary format.
Extract correlation chain from a list of events.
Filter events by time range.
Group events by correlation ID.
Serialize an event to binary format.
Transform event data using a transformation function.
Types
Functions
@spec calculate_serialized_size(Foundation.Types.Event.t()) :: {:ok, non_neg_integer()} | {:error, Foundation.Types.Error.t()}
Calculate the serialized size of an event.
@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.
@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.
@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.
@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.
@spec deserialize_event(binary()) :: {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}
Deserialize an event from binary format.
@spec extract_correlation_chain([Foundation.Types.Event.t()], String.t()) :: [ Foundation.Types.Event.t() ]
Extract correlation chain from a list of events.
@spec filter_by_time_range([Foundation.Types.Event.t()], integer(), integer()) :: [ Foundation.Types.Event.t() ]
Filter events by time range.
@spec group_by_correlation([Foundation.Types.Event.t()]) :: %{ required(String.t()) => [Foundation.Types.Event.t()] }
Group events by correlation ID.
@spec serialize_event(Foundation.Types.Event.t(), serialization_opts()) :: {:ok, binary()} | {:error, Foundation.Types.Error.t()}
Serialize an event to binary format.
@spec transform_event_data(Foundation.Types.Event.t(), (term() -> term())) :: Foundation.Types.Event.t()
Transform event data using a transformation function.