wpool

Worker pool main interface.

Worker pool main interface. Use functions provided by this module to manage your pools of workers

Types


available_worker_timeout() = timeout()

name() = atom()

option() = {overrun_warning, infinity | pos_integer()} | {overrun_handler, {Module::atom(), Fun::atom()}} | {workers, pos_integer()} | {worker_opt, options() (see module gen)} | {worker, {Module::atom(), InitArg::term()}} | {strategy, strategy() (see module supervisor)}

stats() = [{workers, pos_integer()} | {total_message_queue_len, non_neg_integer()} | {worker_stats, [{pos_integer(), worker_stats()}]}]

strategy() = best_worker | random_worker | next_worker | available_worker | {hash_worker, non_neg_integer()}

worker_stats() = [{messsage_queue_len, non_neg_integer()} | {memory, pos_integer()}]

Functions


start() -> ok | {error, {already_started, wpool}}

Starts the application

stop() -> ok

Stops the application

start_pool(Name::name()) -> {ok, pid()}

Equivalent to start_pool(Name, []).

start_pool(Name::name(), Options::[option()]) -> {ok, pid()} | {error, {already_started, pid()} | term()}

Starts (and links) a pool of N wpool_processes. The result pid belongs to a supervisor (in case you want to add it to a supervisor tree)

start_sup_pool(Name::name()) -> {ok, pid()}

Equivalent to start_sup_pool(Name, []).

start_sup_pool(Name::name(), Options::[option()]) -> {ok, pid()} | {error, {already_started, pid()} | term()}

Starts a pool of N wpool_processes supervised by wpool_sup

stop_pool(Name::name()) -> ok

Stops the pool

default_strategy() -> strategy()

Default strategy

call(Sup::name(), Call::term()) -> term()

call(Sup::name(), Call::term(), Strategy::strategy()) -> term()

call(Sup::name(), Call::term(), Strategy::strategy(), Timeout::timeout()) -> term()

Picks a server and issues the call to it. For all strategies except available_worker, Timeout applies only to the time spent on the actual call to the worker, because time spent finding the worker in other strategies is negligible. For available_worker the time used choosing a worker is also considered

call(Sup::name(), Call::term(), Strategy::strategy(), Worker_Timeout::available_worker_timeout(), Timeout::timeout()) -> term()

Picks a server and issues the call to it. For all strategies except available_worker, Worker_Timeout is ignored For available_worker Worker_Timeout is the time used choosing a worker

cast(Sup::name(), Cast::term()) -> ok

cast(Sup::name(), Cast::term(), Strategy::strategy()) -> ok

Picks a server and issues the cast to it

stats(Sup::name()) -> stats()

Retrieves a snapshot of the pool stats

Fernando Benavides elbrujohalcon@inaka.net