Skip to content

Pinger Engine

Overall Philosophy

The Pinger Engine is designed to provide a functionality of a scheduled Mempool executor. Keeping track of the Mempool Engine address and the timer set, it calls for the Mempool to execute every specified amount of time.

Initialization

The Engine requires one input, namely the Mempool address. The user may also provide a non-negative integer for the time information of the engine. If no argument is given, we assume that no timer is set.

State

The state types are provided as follows:

State

The state types are provided as follows:

  • field(:mempool, Router.Addr.t()) Mempool Address

  • field(:time, non_neg_integer() | atom(), default: :no_timer) Timer field

Public API

Set_Timer

Purpose

Sets the timer which the clock uses to schedule how frequently to ask Mempool for execution.

Type

Input

  • `Router.Addr.t()`` Router address of the mempool
  • non_neg_integer() | :no_timer Timer for the Engine

Output

No user-visible output on success

Start

Starts the pinger process. If no timer is specified, send a default message. Otherwise, send message to itself after the specified time. Namely it launches the pinger function.

Input

  • Router.Addr.t() An address of the Pinger Engine the user wants to start

*Output

  • String.t() Message specifying successful launch

Pinger

Purpose

The pinger function asks for a timer feed. If no timer is specified, sends a base message to the user. Otherwise, asks to send an execute message to the pinger itself after a specified amount of time.

Input

  • :no_timer | non_neg_integer() Either the message specifying no timer or an integer specifying time setting

Output

  • :ok | reference() Either returns a base message in case no timer is set or sends a classical reference

Message Flow

sequenceDiagram

%% --8<-- [start:sequence]
Any Local Engine ->>+ Pinger Engine: Set_Timer
Any Local Engine ->>+ Pinger Engine: Start
Pinger Engine -->>- Any Local Engine: Start_Reply
Pinger Engine ->>+ Pinger Engine: Pinger
%% --8<-- [end:sequence]