View Source espace_util (espace v0.9.0)
Summary
Functions
Conditionally evaluate a tuple and out
the result to the unnamed instance.
Conditionally evaluate a tuple and out
the result to a named instance.
Convert an instance name to longer prefixed name.
wait for etsmgr to (re)start, then ask it to manage our table.
Functions
-spec eval_out(tuple()) -> done.
Conditionally evaluate a tuple and out
the result to the unnamed instance.
eval_out/2
for details.
Conditionally evaluate a tuple and out
the result to a named instance.
The elements of the output tuple correspond to those of Tuple_in
. If any of the elements of Tuple_in
are recognized as function, then the corresponding output element will be the value of the function.
Two types of patterns are recognized as functions and are evaluated. A normal function expression of arity zero, fun () -> expr end
. And, a tuple with two elements, a function expresion of arity N
and a list of length N
, N
can be zero.
Convert an instance name to longer prefixed name.
This is used for obtaining the instance specific server/table names. For example inst_to_name(espace_sup, aaa)
will return espace_sup_aaa
.
If the instance name is espace
, then the prefix is returned without an instance name suffix. For example inst_to_name(espace_sup, espace)
will return espace_sup
.
Instead of generating the full name each time this function is called, we perform the conversion once and cache the result as an entry in the persistent_term
store. Each entry has the key {espace, Inst_name, Prefix}
, e.g. {espace, aaa, espace_sup}
, and the full name as value, e.g. espace_sup_aaa
.
persistent_term
store will help speed up all named instances, including the short lived espace:eval/2
processes.
-spec wait4etsmgr(atom(), init | recover, atom(), term()) -> {ok, pid(), ets:tab()} | {error, term()}.
wait for etsmgr to (re)start, then ask it to manage our table.
There are two occassions where this function is called:
init
- start/restart of our gen_server that owns a table, in this case we do not have, or know of, the ETS table. So we asketsmgr
to create a new table usingetsmgr:new_table/4
. Ifetsmgr
is already managing such a table that does not already belong to another process, then that table will be given to us.recover
- recovery of theetsmgr
server, in this case we asketsmgr
to start managing our ETS table.