Packages
ferricstore
0.5.7
0.11.14
0.11.12
0.11.11
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.2.0
0.1.0
FerricFlow durable workflows and queues with native-protocol storage, Raft durability, and Bitcask persistence.
Current section
Files
Jump to
Current section
Files
lib/ferricstore/raft/command_stamp.ex
defmodule Ferricstore.Raft.CommandStamp do
@moduledoc false
alias Ferricstore.HLC
@type hlc_ts :: {non_neg_integer(), non_neg_integer()}
@type stamped_command :: {term(), %{hlc_ts: hlc_ts()}}
@spec stamp(term()) :: stamped_command()
def stamp({command, %{hlc_ts: {physical_ms, logical}}} = stamped)
when is_integer(physical_ms) and is_integer(logical) and physical_ms >= 0 and logical >= 0 and
is_tuple(command) do
stamped
end
def stamp(command) do
{command, %{hlc_ts: HLC.now()}}
end
@spec to_ttb(term()) :: {:ttb, binary()}
def to_ttb(command) do
{:ttb, :erlang.term_to_binary(stamp(command))}
end
end