shards state.
State Handler - This module encapsulates the shards state.
There are different properties that have to be stored somewhere so
shards can work properly. Remember, shards performs a logic on
top of ETS, for example, compute the shard and/or node based on
the Key where the action will be applied. To do so, it needs the
number of shards or partitions, the function to pick the shard
and/or node (in case of global scope), the table type and
of course, the module to use depending on the scope;
shards_local or shards_dist.
shards,
a new supervision tree is created as well to represent that table.
The supervisor is shards_owner_sup and it has a control ETS
table to save the state so it can be fetched later at any time.
key() = term()
n_shards() = pos_integer()
op() = r | w | d
pick_fun() = fun((key(), range(), op()) -> non_neg_integer() | any)
range() = pos_integer()
scope() = l | g
state() = #state{module = module(), sup_name = atom(), n_shards = pos_integer(), pick_shard_fun = pick_fun(), pick_node_fun = pick_fun()}
state_map() = #{module => module(), sup_name => atom(), n_shards => pos_integer(), pick_shard_fun => pick_fun(), pick_node_fun => pick_fun()}
| eval_pick_shard/2 | Equivalent to eval_pick_shard(Key, w, State).
|
| eval_pick_shard/3 | |
| from_map/1 |
Builds a new state from the given Map. |
| get/1 |
Returns the state for the given table Tab. |
| is_state/1 |
Returns true in the given argument is a valid state, otherwise
false is returned. |
| module/1 | |
| module/2 | |
| n_shards/1 | |
| n_shards/2 | |
| new/0 | |
| new/1 | |
| new/2 | |
| new/3 | |
| new/4 | |
| new/5 | |
| pick_node_fun/1 | |
| pick_node_fun/2 | |
| pick_shard_fun/1 | |
| pick_shard_fun/2 | |
| scope/1 | |
| sup_name/1 | |
| sup_name/2 | |
| to_map/1 |
Converts the given state into a map. |
eval_pick_shard(Key, State) -> any()
Equivalent to eval_pick_shard(Key, w, State).
from_map(Map::map()) -> state()
Builds a new state from the given Map.
get(Tab::atom()) -> state()
Returns the state for the given table Tab.
is_state(State::any()) -> boolean()
Returns true in the given argument is a valid state, otherwise
false is returned.
module(State::state() | atom()) -> module()
n_shards(State::state() | atom()) -> pos_integer()
new() -> state()
new(Shards::pos_integer()) -> state()
new(Shards::pos_integer(), Module::module()) -> state()
new(Shards::pos_integer(), Module::module(), SupName::atom()) -> state()
new(Shards::pos_integer(), Module::module(), SupName::atom(), PickShardFun::pick_fun()) -> state()
new(Shards::pos_integer(), Module::module(), SupName::atom(), PickShardFun::pick_fun(), PickNodeFun::pick_fun()) -> state()
pick_node_fun(State::state() | atom()) -> pick_fun()
pick_node_fun(Fun::pick_fun(), State::state()) -> state()
pick_shard_fun(State::state() | atom()) -> pick_fun()
pick_shard_fun(Fun::pick_fun(), State::state()) -> state()
sup_name(State::state() | atom()) -> atom()
to_map(State::state()) -> state_map()
Converts the given state into a map.
Generated by EDoc