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()
Defines key type.
n_shards() = pos_integer()
Defines number of shards.
op() = r | w | d
Defines operation type.
r: Read operations.w: Write operation.d: Delete operations.pick_fun() = 'fun'(fun((key(), range(), op()) -> non_neg_integer()) | any)
Defines spec function to pick or compute the shard and/or node.
The function returns a value for Key within the range 0..Range-1.
range() = pos_integer()
Defines the range or set – range > 0.
scope() = l | g
Defines the scope, if it is local l or global g.
state() = #state{}
Defines shards state.
state_map() = #{module => module(), sup_name => atom(), n_shards => pos_integer(), keypos => pos_integer(), pick_shard_fun => pick_fun(), pick_node_fun => pick_fun()}
Defines the map representation of the shards state:
module: Module to be used depending on the scope:
shards_local or shards_dist.sup_name: Registered name for shards_sup.n_shards: Number of ETS shards/fragments.keypos: Element in the stored tuples to use as key.pick_shard_fun: Function callback to pick/compute the shard.pick_node_fun: Function callback to pick/compute the node.| 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. |
| keypos/1 | |
| keypos/2 | |
| module/1 | |
| module/2 | |
| n_shards/1 | |
| n_shards/2 | |
| new/0 | |
| new/1 | |
| new/2 | |
| new/3 | |
| 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::#{atom() => term()}) -> 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.
keypos(State::state() | atom()) -> pos_integer()
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()
pick_node_fun(State::state() | atom()) -> pick_fun()
pick_node_fun(State::state(), Fun::pick_fun()) -> state()
pick_shard_fun(State::state() | atom()) -> pick_fun()
pick_shard_fun(State::state(), Fun::pick_fun()) -> state()
sup_name(State::state() | atom()) -> atom()
to_map(State::state()) -> state_map()
Converts the given state into a map.
Generated by EDoc