The Machi write-once projection store service.
This API is gen_server-style message passing, intended for use within a single Erlang node to glue together the projection store server with the node-local process that implements Machi's FLU client access protocol (on the "server side" of the TCP connection).
All Machi client access to the projection store SHOULD NOT use this
module's API. Instead, clients should access indirectly via machi_cr_client
, machi_proxy_flu1_client
, or machi_flu1_client
.
gen_server
process that is associated with each FLU. Conceptually, the
projection store is an array of write-once registers. For each
projection store register, the key is a 2-tuple of an epoch number
(non_neg_integer()
type) and a projection type (public
or
private
type); the value is a projection data structure
(projection_v1()
type).
code_change/3 | |
get_all_projections/2 | Fetch all projection records of type ProjType . |
get_all_projections/3 | Fetch all projection records of type ProjType . |
get_latest_epochid/2 | Fetch the latest epoch number + checksum for type ProjType . |
get_latest_epochid/3 | Fetch the latest epoch number + checksum for type ProjType . |
handle_call/3 | |
handle_cast/2 | |
handle_info/2 | |
init/1 | |
list_all_projections/2 | Fetch all projection epoch numbers of type ProjType . |
list_all_projections/3 | Fetch all projection epoch numbers of type ProjType . |
read/3 | Fetch the projection record type ProjType for epoch number Epoch . |
read/4 | Fetch the projection record type ProjType for epoch number Epoch . |
read_latest_projection/2 | Fetch the latest projection record for type ProjType . |
read_latest_projection/3 | Fetch the latest projection record for type ProjType . |
set_wedge_notify_pid/2 | |
start_link/3 | Start a new projection store server. |
terminate/2 | |
write/3 | Write the projection record type ProjType for epoch number Epoch . |
write/4 | Write the projection record type ProjType for epoch number Epoch . |
code_change(OldVsn, S, Extra) -> any()
get_all_projections(PidSpec, ProjType) -> any()
Fetch all projection records of type ProjType
.
get_all_projections(PidSpec, ProjType, Timeout) -> any()
Fetch all projection records of type ProjType
.
get_latest_epochid(PidSpec, ProjType) -> any()
Fetch the latest epoch number + checksum for type ProjType
.
get_latest_epochid(PidSpec, ProjType, Timeout) -> any()
Fetch the latest epoch number + checksum for type ProjType
.
projection.
handle_call(Request, From, S) -> any()
handle_cast(Msg, S) -> any()
handle_info(Info, S) -> any()
init(X1) -> any()
list_all_projections(PidSpec, ProjType) -> any()
Fetch all projection epoch numbers of type ProjType
.
list_all_projections(PidSpec, ProjType, Timeout) -> any()
Fetch all projection epoch numbers of type ProjType
.
read(PidSpec, ProjType, Epoch) -> any()
Fetch the projection record type ProjType
for epoch number Epoch
.
read(PidSpec, ProjType, Epoch, Timeout) -> any()
Fetch the projection record type ProjType
for epoch number Epoch
.
read_latest_projection(PidSpec, ProjType) -> any()
Fetch the latest projection record for type ProjType
.
read_latest_projection(PidSpec, ProjType, Timeout) -> any()
Fetch the latest projection record for type ProjType
.
set_wedge_notify_pid(PidSpec, NotifyWedgeStateChanges) -> any()
start_link(RegName, DataDir, NotifyWedgeStateChanges) -> any()
Start a new projection store server.
TheDataDir
argument should be the same directory as specified
for use by our companion FLU data server -- all file system paths
used by this server are intended to be stored underneath a common
file system parent directory as the FLU data server & sequencer
servers.
terminate(Reason, S) -> any()
write(PidSpec, ProjType, Proj) -> any()
Write the projection record type ProjType
for epoch number Epoch
.
write(PidSpec, ProjType, Proj, Timeout) -> any()
Write the projection record type ProjType
for epoch number Epoch
.
Generated by EDoc, May 20 2015, 12:58:33.