Module khepri_machine

Khepri private low-level API.

Behaviours: ra_machine.

Description

Khepri private low-level API.

This module exposes the private "low-level" API to the Khepri database and state machine. Main functions correspond to Ra commands implemented by the state machine. All functions in khepri are built on top of this module.

This module is private. The documentation is still visible because it may help understand some implementation details. However, this module should never be called directly outside of Khepri.

Data Types

async_ret()

async_ret() = ok

common_ret()

common_ret() = khepri:ok(khepri_adv:node_props_map()) | khepri:error()

machine_config()

machine_config() = #config{store_id = khepri:store_id(), member = ra:server_id(), snapshot_interval = non_neg_integer()}

Configuration record, holding read-only or rarely changing fields.

projection_tree()

projection_tree() = khepri_pattern_tree:tree(khepri_projection:projection())

A pattern tree that holds all registered projections in the machine's state.

props()

props() = #{payload_version := khepri:payload_version(), child_list_version := khepri:child_list_version()}

Properties attached to each node in the tree structure.

state()

state() = #khepri_machine{config = khepri_machine:machine_config(), tree = khepri_tree:tree(), triggers = #{khepri:trigger_id() => #{sproc := khepri_path:native_path(), event_filter := khepri_evf:event_filter()}}, emitted_triggers = [khepri_machine:triggered()], projections = khepri_machine:projection_tree(), metrics = #{applied_command_count => non_neg_integer()}}

State of this Ra state machine.

triggered()

triggered() = #triggered{id = khepri:trigger_id(), event_filter = khepri_evf:event_filter(), sproc = horus:horus_fun(), props = map()}

tx_ret()

tx_ret() = khepri:ok(khepri_tx:tx_fun_result()) | khepri_tx:tx_abort() | no_return()

Function Index

fold/5Returns all tree nodes matching the given path pattern.
delete/3Deletes all tree nodes matching the path pattern.
transaction/5Runs a transaction and returns the result.
handle_tx_exception/1
register_trigger/5Registers a trigger.
register_projection/4Registers a projection.
unregister_projection/3Unregisters a projection by name.
version/0

Function Details

fold/5

fold(StoreId, PathPattern, Fun, Acc, Options) -> Ret

StoreId: the name of the Ra cluster.
PathPattern: the path (or path pattern) to the nodes to get.
Options: query options such as favor.

returns: an {ok, NodePropsMap} tuple with a map with zero, one or more entries, or an {error, Reason} tuple.

Returns all tree nodes matching the given path pattern.

delete/3

delete(StoreId, PathPattern, Options) -> Ret

StoreId: the name of the Ra cluster.
PathPattern: the path (or path pattern) to the nodes to delete.
Options: command options such as the command type.

returns: in the case of a synchronous delete, an {ok, NodePropsMap} tuple with a map with zero, one or more entries, or an {error, Reason} tuple; in the case of an asynchronous put, always ok (the actual return value may be sent by a message if a correlation ID was specified).

Deletes all tree nodes matching the path pattern.

transaction/5

transaction(StoreId, FunOrPath, Args, ReadWrite, Options) -> Ret

StoreId: the name of the Ra cluster.
FunOrPath: an arbitrary anonymous function or a path pattern pointing to a stored procedure.
Args: a list of arguments to pass to FunOrPath.
ReadWrite: the read/write or read-only nature of the transaction.
Options: command options such as the command type.

returns: in the case of a synchronous transaction, {ok, Result} where Result is the return value of FunOrPath, or {error, Reason} if the anonymous function was aborted; in the case of an asynchronous transaction, always ok (the actual return value may be sent by a message if a correlation ID was specified).

Runs a transaction and returns the result.

handle_tx_exception/1

handle_tx_exception(X1) -> any()

register_trigger/5

register_trigger(StoreId, TriggerId, EventFilter, StoredProcPath, Options) -> Ret

StoreId: the name of the Ra cluster.
TriggerId: the name of the trigger.
EventFilter: the event filter used to associate an event with a stored procedure.
StoredProcPath: the path to the stored procedure to execute when the corresponding event occurs.

returns: ok if the trigger was registered, an {error, Reason} tuple otherwise.

Registers a trigger.

register_projection/4

register_projection(StoreId, PathPattern, Projection, Options) -> Ret

StoreId: the name of the Ra cluster.
PathPattern: the pattern of tree nodes which should be projected.
Projection: the projection record created with khepri_projection:new/3.
Options: command options such as the command type.

returns: ok if the projection was registered, an {error, Reason} tuple otherwise.

Registers a projection.

unregister_projection/3

unregister_projection(StoreId, ProjectionName, Options) -> Ret

StoreId: the name of the Ra cluster.
ProjectionName: the name of the projection to unregister.
Options: command options such as the command type.

returns: ok if the projection existed and was unregistered, an {error, Reason} tuple otherwise.

Unregisters a projection by name.

version/0

version() -> any()


Generated by EDoc