WebsockexNova.Behaviors.RateLimitHandler behaviour (WebsockexNova v0.1.0)

View Source

Behaviour for rate limit handlers. All state is a map. All arguments and return values are explicit and documented.

Summary

Types

Request data

Handler state

Callbacks

Check if a request can proceed based on current rate limits. Returns

Process queued requests on a periodic tick. Returns

Initialize the rate limit handler's state.

Types

request()

@type request() :: map()

Request data

state()

@type state() :: map()

Handler state

Callbacks

check_rate_limit(request, state)

@callback check_rate_limit(request(), state()) ::
  {:allow, state()} | {:queue, state()} | {:reject, term(), state()}

Check if a request can proceed based on current rate limits. Returns:

  • {:allow, state}
  • {:queue, state}
  • {:reject, reason, state}

handle_tick(state)

(optional)
@callback handle_tick(state()) :: {:ok, state()} | {:process, request(), state()}

Process queued requests on a periodic tick. Returns:

  • {:ok, state}
  • {:process, request, state}

rate_limit_init(opts)

@callback rate_limit_init(opts :: term()) :: {:ok, state()}

Initialize the rate limit handler's state.