GSS.Client.Limiter (elixir_google_spreadsheets v0.3.2)
Model of Limiter request subscribed to Client with partition :write or :read
This process is a ProducerConsumer for this GenStage pipeline.
Link to this section Summary
Functions
Check to reach limit.
Gives events for the next stage to process when requested
Callback implementation for GenStage.handle_events/3
.
Ask new events if needed
Callback implementation for GenStage.handle_subscribe/4
.
Callback implementation for GenStage.init/1
.
Starts an limiter manager linked to the current process.
Link to this section Types
options()
Specs
state()
Specs
state() :: %GSS.Client.Limiter{ interval: timeout(), max_demand: pos_integer(), max_interval: timeout(), producer: GenStage.from(), scheduled_at: pos_integer() | nil, taked_events: pos_integer() }
Link to this section Functions
ask_and_schedule(state)
Check to reach limit.
If limit not reached ask again after :interval
timeout,
otherwise ask after :max_interval
timeout.
handle_demand(demand, state)
Gives events for the next stage to process when requested
handle_events(events, from, state)
Callback implementation for GenStage.handle_events/3
.
handle_info(atom, state)
Ask new events if needed
handle_subscribe(atom, arg2, from, state)
Callback implementation for GenStage.handle_subscribe/4
.
init(args)
Callback implementation for GenStage.init/1
.
start_link(options \\ [])
Specs
start_link(options()) :: GenServer.on_start()
Starts an limiter manager linked to the current process.
If the event manager is successfully created and initialized, the function returns {:ok, pid}, where pid is the PID of the server. If a process with the specified server name already exists, the function returns {:error, {:already_started, pid}} with the PID of that process.
Options
:name
- used for name registration as described in the "Name registration" section of the module documentation:interval
- ask new events from producer after:interval
milliseconds.:max_demand
- count of maximum requests per:maximum_interval
:max_interval
- maximum time that allowed in:max_demand
requests:clients
- list of clients with partition options. For example[{GSS.Client, partition: :read}}]
.