Current section

Files

Jump to
tigerbeetlex lib tigerbeetlex bindings transfer.ex
Raw

lib/tigerbeetlex/bindings/transfer.ex

#######################################################
# This file was auto-generated by elixir_bindings.zig #
# Do not manually modify. #
#######################################################
defmodule TigerBeetlex.Transfer do
@moduledoc """
See [Transfer](https://docs.tigerbeetle.com/reference/transfer#).
"""
use TypedStruct
alias TigerBeetlex.TransferFlags
typedstruct do
field :id, <<_::128>>, default: <<0::size(128)>>
field :debit_account_id, <<_::128>>, default: <<0::size(128)>>
field :credit_account_id, <<_::128>>, default: <<0::size(128)>>
field :amount, non_neg_integer(), default: 0
field :pending_id, <<_::128>>, default: <<0::size(128)>>
field :user_data_128, <<_::128>>, default: <<0::size(128)>>
field :user_data_64, non_neg_integer(), default: 0
field :user_data_32, non_neg_integer(), default: 0
field :timeout, non_neg_integer(), default: 0
field :ledger, non_neg_integer(), default: 0
field :code, non_neg_integer(), default: 0
field :flags, TransferFlags.t(), default: %TransferFlags{}
field :timestamp, non_neg_integer(), default: 0
end
@doc "The maximum amount for a transfer. Used in Two-Phase transfers to post the full pending amount."
def amount_max do
Integer.pow(2, 128) - 1
end
@doc """
Creates a `TigerBeetlex.Transfer` struct from its binary representation.
"""
@spec from_binary(binary :: <<_::1024>>) :: t()
def from_binary(<<_::binary-size(128)>> = bin) do
<<
id::binary-size(16),
debit_account_id::binary-size(16),
credit_account_id::binary-size(16),
amount::unsigned-little-128,
pending_id::binary-size(16),
user_data_128::binary-size(16),
user_data_64::unsigned-little-64,
user_data_32::unsigned-little-32,
timeout::unsigned-little-32,
ledger::unsigned-little-32,
code::unsigned-little-16,
flags::binary-size(2),
timestamp::unsigned-little-64
>> = bin
%__MODULE__{
id: id,
debit_account_id: debit_account_id,
credit_account_id: credit_account_id,
amount: amount,
pending_id: pending_id,
user_data_128: user_data_128,
user_data_64: user_data_64,
user_data_32: user_data_32,
timeout: timeout,
ledger: ledger,
code: code,
flags: TransferFlags.from_binary(flags),
timestamp: timestamp
}
end
@doc """
Converts a `TigerBeetlex.Transfer` struct to its binary representation.
"""
@spec to_binary(struct :: t()) :: <<_::1024>>
def to_binary(struct) do
%__MODULE__{
id: id,
debit_account_id: debit_account_id,
credit_account_id: credit_account_id,
amount: amount,
pending_id: pending_id,
user_data_128: user_data_128,
user_data_64: user_data_64,
user_data_32: user_data_32,
timeout: timeout,
ledger: ledger,
code: code,
flags: flags,
timestamp: timestamp
} = struct
<<
id::binary-size(16),
debit_account_id::binary-size(16),
credit_account_id::binary-size(16),
amount::unsigned-little-128,
pending_id::binary-size(16),
user_data_128::binary-size(16),
user_data_64::unsigned-little-64,
user_data_32::unsigned-little-32,
timeout::unsigned-little-32,
ledger::unsigned-little-32,
code::unsigned-little-16,
TransferFlags.to_binary(flags)::binary-size(2),
timestamp::unsigned-little-64
>>
end
end