tigerbeetle 0.0.34 → 0.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/ext/tb_client/extconf.rb +13 -13
- data/ext/tb_client/tigerbeetle/LICENSE +177 -0
- data/ext/tb_client/tigerbeetle/build.zig +2327 -0
- data/ext/tb_client/tigerbeetle/src/aof.zig +1000 -0
- data/ext/tb_client/tigerbeetle/src/build_multiversion.zig +808 -0
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/protocol.zig +1283 -0
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/spec.zig +1704 -0
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/types.zig +341 -0
- data/ext/tb_client/tigerbeetle/src/cdc/amqp.zig +1450 -0
- data/ext/tb_client/tigerbeetle/src/cdc/runner.zig +1659 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/samples/main.c +406 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/context.zig +1084 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/echo_client.zig +286 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/packet.zig +158 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal.zig +229 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal_fuzz.zig +110 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.h +386 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.zig +34 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_exports.zig +281 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header.zig +312 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header_test.zig +138 -0
- data/ext/tb_client/tigerbeetle/src/clients/c/test.zig +466 -0
- data/ext/tb_client/tigerbeetle/src/clients/docs_samples.zig +157 -0
- data/ext/tb_client/tigerbeetle/src/clients/docs_types.zig +90 -0
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/ci.zig +203 -0
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/docs.zig +79 -0
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/dotnet_bindings.zig +542 -0
- data/ext/tb_client/tigerbeetle/src/clients/go/ci.zig +109 -0
- data/ext/tb_client/tigerbeetle/src/clients/go/docs.zig +86 -0
- data/ext/tb_client/tigerbeetle/src/clients/go/go_bindings.zig +370 -0
- data/ext/tb_client/tigerbeetle/src/clients/go/pkg/native/tb_client.h +386 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/ci.zig +167 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/docs.zig +126 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/java_bindings.zig +996 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/src/client.zig +748 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni.zig +3238 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_tests.zig +1718 -0
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_thread_cleaner.zig +190 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/ci.zig +104 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/docs.zig +75 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/node.zig +522 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/node_bindings.zig +267 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/src/c.zig +3 -0
- data/ext/tb_client/tigerbeetle/src/clients/node/src/translate.zig +379 -0
- data/ext/tb_client/tigerbeetle/src/clients/python/ci.zig +131 -0
- data/ext/tb_client/tigerbeetle/src/clients/python/docs.zig +63 -0
- data/ext/tb_client/tigerbeetle/src/clients/python/python_bindings.zig +588 -0
- data/ext/tb_client/tigerbeetle/src/clients/rust/assets/tb_client.h +386 -0
- data/ext/tb_client/tigerbeetle/src/clients/rust/ci.zig +73 -0
- data/ext/tb_client/tigerbeetle/src/clients/rust/docs.zig +106 -0
- data/ext/tb_client/tigerbeetle/src/clients/rust/rust_bindings.zig +305 -0
- data/ext/tb_client/tigerbeetle/src/config.zig +296 -0
- data/ext/tb_client/tigerbeetle/src/constants.zig +790 -0
- data/ext/tb_client/tigerbeetle/src/copyhound.zig +202 -0
- data/ext/tb_client/tigerbeetle/src/counting_allocator.zig +72 -0
- data/ext/tb_client/tigerbeetle/src/direction.zig +11 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/build.zig +158 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/content.zig +156 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/docs.zig +252 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/file_checker.zig +313 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/html.zig +87 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/page_writer.zig +63 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/redirects.zig +47 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/search_index_writer.zig +28 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/service_worker_writer.zig +61 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/single_page_writer.zig +169 -0
- data/ext/tb_client/tigerbeetle/src/docs_website/src/website.zig +46 -0
- data/ext/tb_client/tigerbeetle/src/ewah.zig +445 -0
- data/ext/tb_client/tigerbeetle/src/ewah_benchmark.zig +128 -0
- data/ext/tb_client/tigerbeetle/src/ewah_fuzz.zig +171 -0
- data/ext/tb_client/tigerbeetle/src/fuzz_tests.zig +179 -0
- data/ext/tb_client/tigerbeetle/src/integration_tests.zig +662 -0
- data/ext/tb_client/tigerbeetle/src/io/common.zig +155 -0
- data/ext/tb_client/tigerbeetle/src/io/darwin.zig +1093 -0
- data/ext/tb_client/tigerbeetle/src/io/linux.zig +1880 -0
- data/ext/tb_client/tigerbeetle/src/io/test.zig +1005 -0
- data/ext/tb_client/tigerbeetle/src/io/windows.zig +1598 -0
- data/ext/tb_client/tigerbeetle/src/io.zig +34 -0
- data/ext/tb_client/tigerbeetle/src/iops.zig +134 -0
- data/ext/tb_client/tigerbeetle/src/list.zig +236 -0
- data/ext/tb_client/tigerbeetle/src/lsm/binary_search.zig +848 -0
- data/ext/tb_client/tigerbeetle/src/lsm/binary_search_benchmark.zig +179 -0
- data/ext/tb_client/tigerbeetle/src/lsm/cache_map.zig +424 -0
- data/ext/tb_client/tigerbeetle/src/lsm/cache_map_fuzz.zig +420 -0
- data/ext/tb_client/tigerbeetle/src/lsm/compaction.zig +2117 -0
- data/ext/tb_client/tigerbeetle/src/lsm/composite_key.zig +182 -0
- data/ext/tb_client/tigerbeetle/src/lsm/forest.zig +1119 -0
- data/ext/tb_client/tigerbeetle/src/lsm/forest_fuzz.zig +1102 -0
- data/ext/tb_client/tigerbeetle/src/lsm/forest_table_iterator.zig +200 -0
- data/ext/tb_client/tigerbeetle/src/lsm/groove.zig +1495 -0
- data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge.zig +739 -0
- data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge_benchmark.zig +166 -0
- data/ext/tb_client/tigerbeetle/src/lsm/manifest.zig +754 -0
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_level.zig +1294 -0
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_level_fuzz.zig +510 -0
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_log.zig +1263 -0
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_log_fuzz.zig +628 -0
- data/ext/tb_client/tigerbeetle/src/lsm/node_pool.zig +247 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_buffer.zig +116 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_builder.zig +543 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_fuzz.zig +938 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_lookup.zig +293 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_merge.zig +362 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_range.zig +99 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_state.zig +17 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scan_tree.zig +1036 -0
- data/ext/tb_client/tigerbeetle/src/lsm/schema.zig +617 -0
- data/ext/tb_client/tigerbeetle/src/lsm/scratch_memory.zig +84 -0
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array.zig +1500 -0
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_benchmark.zig +149 -0
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_fuzz.zig +7 -0
- data/ext/tb_client/tigerbeetle/src/lsm/set_associative_cache.zig +865 -0
- data/ext/tb_client/tigerbeetle/src/lsm/table.zig +607 -0
- data/ext/tb_client/tigerbeetle/src/lsm/table_memory.zig +843 -0
- data/ext/tb_client/tigerbeetle/src/lsm/table_value_iterator.zig +105 -0
- data/ext/tb_client/tigerbeetle/src/lsm/timestamp_range.zig +40 -0
- data/ext/tb_client/tigerbeetle/src/lsm/tree.zig +630 -0
- data/ext/tb_client/tigerbeetle/src/lsm/tree_fuzz.zig +933 -0
- data/ext/tb_client/tigerbeetle/src/lsm/zig_zag_merge.zig +557 -0
- data/ext/tb_client/tigerbeetle/src/message_buffer.zig +469 -0
- data/ext/tb_client/tigerbeetle/src/message_bus.zig +1214 -0
- data/ext/tb_client/tigerbeetle/src/message_bus_fuzz.zig +936 -0
- data/ext/tb_client/tigerbeetle/src/message_pool.zig +343 -0
- data/ext/tb_client/tigerbeetle/src/multiversion.zig +2195 -0
- data/ext/tb_client/tigerbeetle/src/queue.zig +390 -0
- data/ext/tb_client/tigerbeetle/src/repl/completion.zig +201 -0
- data/ext/tb_client/tigerbeetle/src/repl/parser.zig +1356 -0
- data/ext/tb_client/tigerbeetle/src/repl/terminal.zig +496 -0
- data/ext/tb_client/tigerbeetle/src/repl.zig +1034 -0
- data/ext/tb_client/tigerbeetle/src/scripts/amqp.zig +973 -0
- data/ext/tb_client/tigerbeetle/src/scripts/cfo.zig +1866 -0
- data/ext/tb_client/tigerbeetle/src/scripts/changelog.zig +304 -0
- data/ext/tb_client/tigerbeetle/src/scripts/ci.zig +227 -0
- data/ext/tb_client/tigerbeetle/src/scripts/client_readmes.zig +658 -0
- data/ext/tb_client/tigerbeetle/src/scripts/devhub.zig +466 -0
- data/ext/tb_client/tigerbeetle/src/scripts/release.zig +1058 -0
- data/ext/tb_client/tigerbeetle/src/scripts.zig +105 -0
- data/ext/tb_client/tigerbeetle/src/shell.zig +1195 -0
- data/ext/tb_client/tigerbeetle/src/stack.zig +260 -0
- data/ext/tb_client/tigerbeetle/src/state_machine/auditor.zig +911 -0
- data/ext/tb_client/tigerbeetle/src/state_machine/workload.zig +2079 -0
- data/ext/tb_client/tigerbeetle/src/state_machine.zig +4872 -0
- data/ext/tb_client/tigerbeetle/src/state_machine_fuzz.zig +288 -0
- data/ext/tb_client/tigerbeetle/src/state_machine_tests.zig +3128 -0
- data/ext/tb_client/tigerbeetle/src/static_allocator.zig +82 -0
- data/ext/tb_client/tigerbeetle/src/stdx/bit_set.zig +157 -0
- data/ext/tb_client/tigerbeetle/src/stdx/bounded_array.zig +292 -0
- data/ext/tb_client/tigerbeetle/src/stdx/debug.zig +65 -0
- data/ext/tb_client/tigerbeetle/src/stdx/flags.zig +1414 -0
- data/ext/tb_client/tigerbeetle/src/stdx/mlock.zig +92 -0
- data/ext/tb_client/tigerbeetle/src/stdx/prng.zig +677 -0
- data/ext/tb_client/tigerbeetle/src/stdx/radix.zig +336 -0
- data/ext/tb_client/tigerbeetle/src/stdx/ring_buffer.zig +511 -0
- data/ext/tb_client/tigerbeetle/src/stdx/sort_test.zig +112 -0
- data/ext/tb_client/tigerbeetle/src/stdx/stdx.zig +1160 -0
- data/ext/tb_client/tigerbeetle/src/stdx/testing/low_level_hash_vectors.zig +142 -0
- data/ext/tb_client/tigerbeetle/src/stdx/testing/snaptest.zig +361 -0
- data/ext/tb_client/tigerbeetle/src/stdx/time_units.zig +275 -0
- data/ext/tb_client/tigerbeetle/src/stdx/unshare.zig +295 -0
- data/ext/tb_client/tigerbeetle/src/stdx/vendored/aegis.zig +436 -0
- data/ext/tb_client/tigerbeetle/src/stdx/windows.zig +48 -0
- data/ext/tb_client/tigerbeetle/src/stdx/zipfian.zig +402 -0
- data/ext/tb_client/tigerbeetle/src/storage.zig +489 -0
- data/ext/tb_client/tigerbeetle/src/storage_fuzz.zig +180 -0
- data/ext/tb_client/tigerbeetle/src/testing/bench.zig +146 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/grid_checker.zig +53 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/journal_checker.zig +61 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/manifest_checker.zig +76 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/message_bus.zig +110 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/network.zig +412 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/state_checker.zig +331 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster/storage_checker.zig +458 -0
- data/ext/tb_client/tigerbeetle/src/testing/cluster.zig +1198 -0
- data/ext/tb_client/tigerbeetle/src/testing/exhaustigen.zig +128 -0
- data/ext/tb_client/tigerbeetle/src/testing/fixtures.zig +181 -0
- data/ext/tb_client/tigerbeetle/src/testing/fuzz.zig +144 -0
- data/ext/tb_client/tigerbeetle/src/testing/id.zig +97 -0
- data/ext/tb_client/tigerbeetle/src/testing/io.zig +317 -0
- data/ext/tb_client/tigerbeetle/src/testing/marks.zig +126 -0
- data/ext/tb_client/tigerbeetle/src/testing/packet_simulator.zig +533 -0
- data/ext/tb_client/tigerbeetle/src/testing/reply_sequence.zig +154 -0
- data/ext/tb_client/tigerbeetle/src/testing/state_machine.zig +389 -0
- data/ext/tb_client/tigerbeetle/src/testing/storage.zig +1247 -0
- data/ext/tb_client/tigerbeetle/src/testing/table.zig +249 -0
- data/ext/tb_client/tigerbeetle/src/testing/time.zig +98 -0
- data/ext/tb_client/tigerbeetle/src/testing/tmp_tigerbeetle.zig +212 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/constants.zig +26 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/faulty_network.zig +580 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/java_driver/ci.zig +39 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/logged_process.zig +214 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/rust_driver/ci.zig +34 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/supervisor.zig +766 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/workload.zig +543 -0
- data/ext/tb_client/tigerbeetle/src/testing/vortex/zig_driver.zig +181 -0
- data/ext/tb_client/tigerbeetle/src/tidy.zig +1448 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_driver.zig +227 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_load.zig +1069 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/cli.zig +1422 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect.zig +1658 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect_integrity.zig +518 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/libtb_client.zig +36 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/main.zig +646 -0
- data/ext/tb_client/tigerbeetle/src/tigerbeetle.zig +958 -0
- data/ext/tb_client/tigerbeetle/src/time.zig +236 -0
- data/ext/tb_client/tigerbeetle/src/trace/event.zig +745 -0
- data/ext/tb_client/tigerbeetle/src/trace/statsd.zig +462 -0
- data/ext/tb_client/tigerbeetle/src/trace.zig +556 -0
- data/ext/tb_client/tigerbeetle/src/unit_tests.zig +321 -0
- data/ext/tb_client/tigerbeetle/src/vopr.zig +1785 -0
- data/ext/tb_client/tigerbeetle/src/vortex.zig +101 -0
- data/ext/tb_client/tigerbeetle/src/vsr/checkpoint_trailer.zig +473 -0
- data/ext/tb_client/tigerbeetle/src/vsr/checksum.zig +208 -0
- data/ext/tb_client/tigerbeetle/src/vsr/checksum_benchmark.zig +43 -0
- data/ext/tb_client/tigerbeetle/src/vsr/client.zig +768 -0
- data/ext/tb_client/tigerbeetle/src/vsr/client_replies.zig +532 -0
- data/ext/tb_client/tigerbeetle/src/vsr/client_sessions.zig +338 -0
- data/ext/tb_client/tigerbeetle/src/vsr/clock.zig +1019 -0
- data/ext/tb_client/tigerbeetle/src/vsr/fault_detector.zig +279 -0
- data/ext/tb_client/tigerbeetle/src/vsr/free_set.zig +1381 -0
- data/ext/tb_client/tigerbeetle/src/vsr/free_set_fuzz.zig +315 -0
- data/ext/tb_client/tigerbeetle/src/vsr/grid.zig +1460 -0
- data/ext/tb_client/tigerbeetle/src/vsr/grid_blocks_missing.zig +757 -0
- data/ext/tb_client/tigerbeetle/src/vsr/grid_scrubber.zig +797 -0
- data/ext/tb_client/tigerbeetle/src/vsr/journal.zig +2586 -0
- data/ext/tb_client/tigerbeetle/src/vsr/marzullo.zig +308 -0
- data/ext/tb_client/tigerbeetle/src/vsr/message_header.zig +1777 -0
- data/ext/tb_client/tigerbeetle/src/vsr/multi_batch.zig +715 -0
- data/ext/tb_client/tigerbeetle/src/vsr/multi_batch_fuzz.zig +185 -0
- data/ext/tb_client/tigerbeetle/src/vsr/repair_budget.zig +333 -0
- data/ext/tb_client/tigerbeetle/src/vsr/replica.zig +12355 -0
- data/ext/tb_client/tigerbeetle/src/vsr/replica_format.zig +416 -0
- data/ext/tb_client/tigerbeetle/src/vsr/replica_reformat.zig +165 -0
- data/ext/tb_client/tigerbeetle/src/vsr/replica_test.zig +2910 -0
- data/ext/tb_client/tigerbeetle/src/vsr/routing.zig +1075 -0
- data/ext/tb_client/tigerbeetle/src/vsr/superblock.zig +1603 -0
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_fuzz.zig +484 -0
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums.zig +405 -0
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums_fuzz.zig +355 -0
- data/ext/tb_client/tigerbeetle/src/vsr/sync.zig +29 -0
- data/ext/tb_client/tigerbeetle/src/vsr.zig +1727 -0
- data/lib/tb_client/shared_lib.rb +12 -5
- data/lib/tigerbeetle/client.rb +1 -1
- data/lib/tigerbeetle/platforms.rb +9 -0
- data/lib/tigerbeetle/version.rb +2 -2
- data/tigerbeetle.gemspec +22 -5
- metadata +242 -3
- data/ext/tb_client/pkg.tar.gz +0 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////
|
|
2
|
+
// This file was auto-generated by tb_client_header.zig //
|
|
3
|
+
// Do not manually modify. //
|
|
4
|
+
//////////////////////////////////////////////////////////
|
|
5
|
+
|
|
6
|
+
#ifndef TB_CLIENT_H
|
|
7
|
+
#define TB_CLIENT_H
|
|
8
|
+
|
|
9
|
+
#ifdef __cplusplus
|
|
10
|
+
extern "C" {
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
#include <stddef.h>
|
|
14
|
+
#include <stdint.h>
|
|
15
|
+
#include <stdbool.h>
|
|
16
|
+
|
|
17
|
+
typedef __uint128_t tb_uint128_t;
|
|
18
|
+
|
|
19
|
+
typedef enum TB_ACCOUNT_FLAGS {
|
|
20
|
+
TB_ACCOUNT_LINKED = 1 << 0,
|
|
21
|
+
TB_ACCOUNT_DEBITS_MUST_NOT_EXCEED_CREDITS = 1 << 1,
|
|
22
|
+
TB_ACCOUNT_CREDITS_MUST_NOT_EXCEED_DEBITS = 1 << 2,
|
|
23
|
+
TB_ACCOUNT_HISTORY = 1 << 3,
|
|
24
|
+
TB_ACCOUNT_IMPORTED = 1 << 4,
|
|
25
|
+
TB_ACCOUNT_CLOSED = 1 << 5,
|
|
26
|
+
} TB_ACCOUNT_FLAGS;
|
|
27
|
+
|
|
28
|
+
typedef struct tb_account_t {
|
|
29
|
+
tb_uint128_t id;
|
|
30
|
+
tb_uint128_t debits_pending;
|
|
31
|
+
tb_uint128_t debits_posted;
|
|
32
|
+
tb_uint128_t credits_pending;
|
|
33
|
+
tb_uint128_t credits_posted;
|
|
34
|
+
tb_uint128_t user_data_128;
|
|
35
|
+
uint64_t user_data_64;
|
|
36
|
+
uint32_t user_data_32;
|
|
37
|
+
uint32_t reserved;
|
|
38
|
+
uint32_t ledger;
|
|
39
|
+
uint16_t code;
|
|
40
|
+
uint16_t flags;
|
|
41
|
+
uint64_t timestamp;
|
|
42
|
+
} tb_account_t;
|
|
43
|
+
|
|
44
|
+
typedef enum TB_TRANSFER_FLAGS {
|
|
45
|
+
TB_TRANSFER_LINKED = 1 << 0,
|
|
46
|
+
TB_TRANSFER_PENDING = 1 << 1,
|
|
47
|
+
TB_TRANSFER_POST_PENDING_TRANSFER = 1 << 2,
|
|
48
|
+
TB_TRANSFER_VOID_PENDING_TRANSFER = 1 << 3,
|
|
49
|
+
TB_TRANSFER_BALANCING_DEBIT = 1 << 4,
|
|
50
|
+
TB_TRANSFER_BALANCING_CREDIT = 1 << 5,
|
|
51
|
+
TB_TRANSFER_CLOSING_DEBIT = 1 << 6,
|
|
52
|
+
TB_TRANSFER_CLOSING_CREDIT = 1 << 7,
|
|
53
|
+
TB_TRANSFER_IMPORTED = 1 << 8,
|
|
54
|
+
} TB_TRANSFER_FLAGS;
|
|
55
|
+
|
|
56
|
+
typedef struct tb_transfer_t {
|
|
57
|
+
tb_uint128_t id;
|
|
58
|
+
tb_uint128_t debit_account_id;
|
|
59
|
+
tb_uint128_t credit_account_id;
|
|
60
|
+
tb_uint128_t amount;
|
|
61
|
+
tb_uint128_t pending_id;
|
|
62
|
+
tb_uint128_t user_data_128;
|
|
63
|
+
uint64_t user_data_64;
|
|
64
|
+
uint32_t user_data_32;
|
|
65
|
+
uint32_t timeout;
|
|
66
|
+
uint32_t ledger;
|
|
67
|
+
uint16_t code;
|
|
68
|
+
uint16_t flags;
|
|
69
|
+
uint64_t timestamp;
|
|
70
|
+
} tb_transfer_t;
|
|
71
|
+
|
|
72
|
+
typedef enum TB_CREATE_ACCOUNT_RESULT {
|
|
73
|
+
TB_CREATE_ACCOUNT_OK = 0,
|
|
74
|
+
TB_CREATE_ACCOUNT_LINKED_EVENT_FAILED = 1,
|
|
75
|
+
TB_CREATE_ACCOUNT_LINKED_EVENT_CHAIN_OPEN = 2,
|
|
76
|
+
TB_CREATE_ACCOUNT_IMPORTED_EVENT_EXPECTED = 22,
|
|
77
|
+
TB_CREATE_ACCOUNT_IMPORTED_EVENT_NOT_EXPECTED = 23,
|
|
78
|
+
TB_CREATE_ACCOUNT_TIMESTAMP_MUST_BE_ZERO = 3,
|
|
79
|
+
TB_CREATE_ACCOUNT_IMPORTED_EVENT_TIMESTAMP_OUT_OF_RANGE = 24,
|
|
80
|
+
TB_CREATE_ACCOUNT_IMPORTED_EVENT_TIMESTAMP_MUST_NOT_ADVANCE = 25,
|
|
81
|
+
TB_CREATE_ACCOUNT_RESERVED_FIELD = 4,
|
|
82
|
+
TB_CREATE_ACCOUNT_RESERVED_FLAG = 5,
|
|
83
|
+
TB_CREATE_ACCOUNT_ID_MUST_NOT_BE_ZERO = 6,
|
|
84
|
+
TB_CREATE_ACCOUNT_ID_MUST_NOT_BE_INT_MAX = 7,
|
|
85
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_FLAGS = 15,
|
|
86
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_USER_DATA_128 = 16,
|
|
87
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_USER_DATA_64 = 17,
|
|
88
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_USER_DATA_32 = 18,
|
|
89
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_LEDGER = 19,
|
|
90
|
+
TB_CREATE_ACCOUNT_EXISTS_WITH_DIFFERENT_CODE = 20,
|
|
91
|
+
TB_CREATE_ACCOUNT_EXISTS = 21,
|
|
92
|
+
TB_CREATE_ACCOUNT_FLAGS_ARE_MUTUALLY_EXCLUSIVE = 8,
|
|
93
|
+
TB_CREATE_ACCOUNT_DEBITS_PENDING_MUST_BE_ZERO = 9,
|
|
94
|
+
TB_CREATE_ACCOUNT_DEBITS_POSTED_MUST_BE_ZERO = 10,
|
|
95
|
+
TB_CREATE_ACCOUNT_CREDITS_PENDING_MUST_BE_ZERO = 11,
|
|
96
|
+
TB_CREATE_ACCOUNT_CREDITS_POSTED_MUST_BE_ZERO = 12,
|
|
97
|
+
TB_CREATE_ACCOUNT_LEDGER_MUST_NOT_BE_ZERO = 13,
|
|
98
|
+
TB_CREATE_ACCOUNT_CODE_MUST_NOT_BE_ZERO = 14,
|
|
99
|
+
TB_CREATE_ACCOUNT_IMPORTED_EVENT_TIMESTAMP_MUST_NOT_REGRESS = 26,
|
|
100
|
+
} TB_CREATE_ACCOUNT_RESULT;
|
|
101
|
+
|
|
102
|
+
typedef enum TB_CREATE_TRANSFER_RESULT {
|
|
103
|
+
TB_CREATE_TRANSFER_OK = 0,
|
|
104
|
+
TB_CREATE_TRANSFER_LINKED_EVENT_FAILED = 1,
|
|
105
|
+
TB_CREATE_TRANSFER_LINKED_EVENT_CHAIN_OPEN = 2,
|
|
106
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_EXPECTED = 56,
|
|
107
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_NOT_EXPECTED = 57,
|
|
108
|
+
TB_CREATE_TRANSFER_TIMESTAMP_MUST_BE_ZERO = 3,
|
|
109
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMESTAMP_OUT_OF_RANGE = 58,
|
|
110
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMESTAMP_MUST_NOT_ADVANCE = 59,
|
|
111
|
+
TB_CREATE_TRANSFER_RESERVED_FLAG = 4,
|
|
112
|
+
TB_CREATE_TRANSFER_ID_MUST_NOT_BE_ZERO = 5,
|
|
113
|
+
TB_CREATE_TRANSFER_ID_MUST_NOT_BE_INT_MAX = 6,
|
|
114
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_FLAGS = 36,
|
|
115
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_PENDING_ID = 40,
|
|
116
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_TIMEOUT = 44,
|
|
117
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_DEBIT_ACCOUNT_ID = 37,
|
|
118
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_CREDIT_ACCOUNT_ID = 38,
|
|
119
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_AMOUNT = 39,
|
|
120
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_USER_DATA_128 = 41,
|
|
121
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_USER_DATA_64 = 42,
|
|
122
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_USER_DATA_32 = 43,
|
|
123
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_LEDGER = 67,
|
|
124
|
+
TB_CREATE_TRANSFER_EXISTS_WITH_DIFFERENT_CODE = 45,
|
|
125
|
+
TB_CREATE_TRANSFER_EXISTS = 46,
|
|
126
|
+
TB_CREATE_TRANSFER_ID_ALREADY_FAILED = 68,
|
|
127
|
+
TB_CREATE_TRANSFER_FLAGS_ARE_MUTUALLY_EXCLUSIVE = 7,
|
|
128
|
+
TB_CREATE_TRANSFER_DEBIT_ACCOUNT_ID_MUST_NOT_BE_ZERO = 8,
|
|
129
|
+
TB_CREATE_TRANSFER_DEBIT_ACCOUNT_ID_MUST_NOT_BE_INT_MAX = 9,
|
|
130
|
+
TB_CREATE_TRANSFER_CREDIT_ACCOUNT_ID_MUST_NOT_BE_ZERO = 10,
|
|
131
|
+
TB_CREATE_TRANSFER_CREDIT_ACCOUNT_ID_MUST_NOT_BE_INT_MAX = 11,
|
|
132
|
+
TB_CREATE_TRANSFER_ACCOUNTS_MUST_BE_DIFFERENT = 12,
|
|
133
|
+
TB_CREATE_TRANSFER_PENDING_ID_MUST_BE_ZERO = 13,
|
|
134
|
+
TB_CREATE_TRANSFER_PENDING_ID_MUST_NOT_BE_ZERO = 14,
|
|
135
|
+
TB_CREATE_TRANSFER_PENDING_ID_MUST_NOT_BE_INT_MAX = 15,
|
|
136
|
+
TB_CREATE_TRANSFER_PENDING_ID_MUST_BE_DIFFERENT = 16,
|
|
137
|
+
TB_CREATE_TRANSFER_TIMEOUT_RESERVED_FOR_PENDING_TRANSFER = 17,
|
|
138
|
+
TB_CREATE_TRANSFER_CLOSING_TRANSFER_MUST_BE_PENDING = 64,
|
|
139
|
+
TB_CREATE_TRANSFER_LEDGER_MUST_NOT_BE_ZERO = 19,
|
|
140
|
+
TB_CREATE_TRANSFER_CODE_MUST_NOT_BE_ZERO = 20,
|
|
141
|
+
TB_CREATE_TRANSFER_DEBIT_ACCOUNT_NOT_FOUND = 21,
|
|
142
|
+
TB_CREATE_TRANSFER_CREDIT_ACCOUNT_NOT_FOUND = 22,
|
|
143
|
+
TB_CREATE_TRANSFER_ACCOUNTS_MUST_HAVE_THE_SAME_LEDGER = 23,
|
|
144
|
+
TB_CREATE_TRANSFER_TRANSFER_MUST_HAVE_THE_SAME_LEDGER_AS_ACCOUNTS = 24,
|
|
145
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_NOT_FOUND = 25,
|
|
146
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_NOT_PENDING = 26,
|
|
147
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_HAS_DIFFERENT_DEBIT_ACCOUNT_ID = 27,
|
|
148
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_HAS_DIFFERENT_CREDIT_ACCOUNT_ID = 28,
|
|
149
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_HAS_DIFFERENT_LEDGER = 29,
|
|
150
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_HAS_DIFFERENT_CODE = 30,
|
|
151
|
+
TB_CREATE_TRANSFER_EXCEEDS_PENDING_TRANSFER_AMOUNT = 31,
|
|
152
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_HAS_DIFFERENT_AMOUNT = 32,
|
|
153
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_ALREADY_POSTED = 33,
|
|
154
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_ALREADY_VOIDED = 34,
|
|
155
|
+
TB_CREATE_TRANSFER_PENDING_TRANSFER_EXPIRED = 35,
|
|
156
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMESTAMP_MUST_NOT_REGRESS = 60,
|
|
157
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMESTAMP_MUST_POSTDATE_DEBIT_ACCOUNT = 61,
|
|
158
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMESTAMP_MUST_POSTDATE_CREDIT_ACCOUNT = 62,
|
|
159
|
+
TB_CREATE_TRANSFER_IMPORTED_EVENT_TIMEOUT_MUST_BE_ZERO = 63,
|
|
160
|
+
TB_CREATE_TRANSFER_DEBIT_ACCOUNT_ALREADY_CLOSED = 65,
|
|
161
|
+
TB_CREATE_TRANSFER_CREDIT_ACCOUNT_ALREADY_CLOSED = 66,
|
|
162
|
+
TB_CREATE_TRANSFER_OVERFLOWS_DEBITS_PENDING = 47,
|
|
163
|
+
TB_CREATE_TRANSFER_OVERFLOWS_CREDITS_PENDING = 48,
|
|
164
|
+
TB_CREATE_TRANSFER_OVERFLOWS_DEBITS_POSTED = 49,
|
|
165
|
+
TB_CREATE_TRANSFER_OVERFLOWS_CREDITS_POSTED = 50,
|
|
166
|
+
TB_CREATE_TRANSFER_OVERFLOWS_DEBITS = 51,
|
|
167
|
+
TB_CREATE_TRANSFER_OVERFLOWS_CREDITS = 52,
|
|
168
|
+
TB_CREATE_TRANSFER_OVERFLOWS_TIMEOUT = 53,
|
|
169
|
+
TB_CREATE_TRANSFER_EXCEEDS_CREDITS = 54,
|
|
170
|
+
TB_CREATE_TRANSFER_EXCEEDS_DEBITS = 55,
|
|
171
|
+
} TB_CREATE_TRANSFER_RESULT;
|
|
172
|
+
|
|
173
|
+
typedef struct tb_create_accounts_result_t {
|
|
174
|
+
uint32_t index;
|
|
175
|
+
uint32_t result;
|
|
176
|
+
} tb_create_accounts_result_t;
|
|
177
|
+
|
|
178
|
+
typedef struct tb_create_transfers_result_t {
|
|
179
|
+
uint32_t index;
|
|
180
|
+
uint32_t result;
|
|
181
|
+
} tb_create_transfers_result_t;
|
|
182
|
+
|
|
183
|
+
typedef struct tb_account_filter_t {
|
|
184
|
+
tb_uint128_t account_id;
|
|
185
|
+
tb_uint128_t user_data_128;
|
|
186
|
+
uint64_t user_data_64;
|
|
187
|
+
uint32_t user_data_32;
|
|
188
|
+
uint16_t code;
|
|
189
|
+
uint8_t reserved[58];
|
|
190
|
+
uint64_t timestamp_min;
|
|
191
|
+
uint64_t timestamp_max;
|
|
192
|
+
uint32_t limit;
|
|
193
|
+
uint32_t flags;
|
|
194
|
+
} tb_account_filter_t;
|
|
195
|
+
|
|
196
|
+
typedef enum TB_ACCOUNT_FILTER_FLAGS {
|
|
197
|
+
TB_ACCOUNT_FILTER_DEBITS = 1 << 0,
|
|
198
|
+
TB_ACCOUNT_FILTER_CREDITS = 1 << 1,
|
|
199
|
+
TB_ACCOUNT_FILTER_REVERSED = 1 << 2,
|
|
200
|
+
} TB_ACCOUNT_FILTER_FLAGS;
|
|
201
|
+
|
|
202
|
+
typedef struct tb_account_balance_t {
|
|
203
|
+
tb_uint128_t debits_pending;
|
|
204
|
+
tb_uint128_t debits_posted;
|
|
205
|
+
tb_uint128_t credits_pending;
|
|
206
|
+
tb_uint128_t credits_posted;
|
|
207
|
+
uint64_t timestamp;
|
|
208
|
+
uint8_t reserved[56];
|
|
209
|
+
} tb_account_balance_t;
|
|
210
|
+
|
|
211
|
+
typedef struct tb_query_filter_t {
|
|
212
|
+
tb_uint128_t user_data_128;
|
|
213
|
+
uint64_t user_data_64;
|
|
214
|
+
uint32_t user_data_32;
|
|
215
|
+
uint32_t ledger;
|
|
216
|
+
uint16_t code;
|
|
217
|
+
uint8_t reserved[6];
|
|
218
|
+
uint64_t timestamp_min;
|
|
219
|
+
uint64_t timestamp_max;
|
|
220
|
+
uint32_t limit;
|
|
221
|
+
uint32_t flags;
|
|
222
|
+
} tb_query_filter_t;
|
|
223
|
+
|
|
224
|
+
typedef enum TB_QUERY_FILTER_FLAGS {
|
|
225
|
+
TB_QUERY_FILTER_REVERSED = 1 << 0,
|
|
226
|
+
} TB_QUERY_FILTER_FLAGS;
|
|
227
|
+
|
|
228
|
+
// Opaque struct serving as a handle for the client instance.
|
|
229
|
+
// This struct must be "pinned" (not copyable or movable), as its address must remain stable
|
|
230
|
+
// throughout the lifetime of the client instance.
|
|
231
|
+
typedef struct tb_client_t {
|
|
232
|
+
uint64_t opaque[4];
|
|
233
|
+
} tb_client_t;
|
|
234
|
+
|
|
235
|
+
// Struct containing the state of a request submitted through the client.
|
|
236
|
+
// This struct must be "pinned" (not copyable or movable), as its address must remain stable
|
|
237
|
+
// throughout the lifetime of the request.
|
|
238
|
+
typedef struct tb_packet_t {
|
|
239
|
+
void* user_data;
|
|
240
|
+
void* data;
|
|
241
|
+
uint32_t data_size;
|
|
242
|
+
uint16_t user_tag;
|
|
243
|
+
uint8_t operation;
|
|
244
|
+
uint8_t status;
|
|
245
|
+
uint8_t opaque[64];
|
|
246
|
+
} tb_packet_t;
|
|
247
|
+
|
|
248
|
+
typedef enum TB_OPERATION {
|
|
249
|
+
TB_OPERATION_PULSE = 128,
|
|
250
|
+
TB_OPERATION_GET_CHANGE_EVENTS = 137,
|
|
251
|
+
TB_OPERATION_CREATE_ACCOUNTS = 138,
|
|
252
|
+
TB_OPERATION_CREATE_TRANSFERS = 139,
|
|
253
|
+
TB_OPERATION_LOOKUP_ACCOUNTS = 140,
|
|
254
|
+
TB_OPERATION_LOOKUP_TRANSFERS = 141,
|
|
255
|
+
TB_OPERATION_GET_ACCOUNT_TRANSFERS = 142,
|
|
256
|
+
TB_OPERATION_GET_ACCOUNT_BALANCES = 143,
|
|
257
|
+
TB_OPERATION_QUERY_ACCOUNTS = 144,
|
|
258
|
+
TB_OPERATION_QUERY_TRANSFERS = 145,
|
|
259
|
+
} TB_OPERATION;
|
|
260
|
+
|
|
261
|
+
typedef enum TB_PACKET_STATUS {
|
|
262
|
+
TB_PACKET_OK = 0,
|
|
263
|
+
TB_PACKET_TOO_MUCH_DATA = 1,
|
|
264
|
+
TB_PACKET_CLIENT_EVICTED = 2,
|
|
265
|
+
TB_PACKET_CLIENT_RELEASE_TOO_LOW = 3,
|
|
266
|
+
TB_PACKET_CLIENT_RELEASE_TOO_HIGH = 4,
|
|
267
|
+
TB_PACKET_CLIENT_SHUTDOWN = 5,
|
|
268
|
+
TB_PACKET_INVALID_OPERATION = 6,
|
|
269
|
+
TB_PACKET_INVALID_DATA_SIZE = 7,
|
|
270
|
+
} TB_PACKET_STATUS;
|
|
271
|
+
|
|
272
|
+
typedef enum TB_INIT_STATUS {
|
|
273
|
+
TB_INIT_SUCCESS = 0,
|
|
274
|
+
TB_INIT_UNEXPECTED = 1,
|
|
275
|
+
TB_INIT_OUT_OF_MEMORY = 2,
|
|
276
|
+
TB_INIT_ADDRESS_INVALID = 3,
|
|
277
|
+
TB_INIT_ADDRESS_LIMIT_EXCEEDED = 4,
|
|
278
|
+
TB_INIT_SYSTEM_RESOURCES = 5,
|
|
279
|
+
TB_INIT_NETWORK_SUBSYSTEM = 6,
|
|
280
|
+
} TB_INIT_STATUS;
|
|
281
|
+
|
|
282
|
+
typedef enum TB_CLIENT_STATUS {
|
|
283
|
+
TB_CLIENT_OK = 0,
|
|
284
|
+
TB_CLIENT_INVALID = 1,
|
|
285
|
+
} TB_CLIENT_STATUS;
|
|
286
|
+
|
|
287
|
+
typedef enum TB_REGISTER_LOG_CALLBACK_STATUS {
|
|
288
|
+
TB_REGISTER_LOG_CALLBACK_SUCCESS = 0,
|
|
289
|
+
TB_REGISTER_LOG_CALLBACK_ALREADY_REGISTERED = 1,
|
|
290
|
+
TB_REGISTER_LOG_CALLBACK_NOT_REGISTERED = 2,
|
|
291
|
+
} TB_REGISTER_LOG_CALLBACK_STATUS;
|
|
292
|
+
|
|
293
|
+
typedef enum TB_LOG_LEVEL {
|
|
294
|
+
TB_LOG_ERR = 0,
|
|
295
|
+
TB_LOG_WARN = 1,
|
|
296
|
+
TB_LOG_INFO = 2,
|
|
297
|
+
TB_LOG_DEBUG = 3,
|
|
298
|
+
} TB_LOG_LEVEL;
|
|
299
|
+
|
|
300
|
+
typedef struct tb_init_parameters_t {
|
|
301
|
+
tb_uint128_t cluster_id;
|
|
302
|
+
tb_uint128_t client_id;
|
|
303
|
+
uint8_t* addresses_ptr;
|
|
304
|
+
uint64_t addresses_len;
|
|
305
|
+
} tb_init_parameters_t;
|
|
306
|
+
|
|
307
|
+
// Per-client callback invoked every time a `tb_client_submit` completes or is canceled.
|
|
308
|
+
// Use `packet->userdata` to identify the specific submission.
|
|
309
|
+
// `result` is null iff `packet->status != TB_PACKET_OK`
|
|
310
|
+
// `result` is only valid for the duration of the callback itself.
|
|
311
|
+
typedef void (*tb_completion_t)(
|
|
312
|
+
uintptr_t userdata,
|
|
313
|
+
tb_packet_t* packet,
|
|
314
|
+
uint64_t timestamp,
|
|
315
|
+
const uint8_t *result, // nullable
|
|
316
|
+
uint32_t result_size
|
|
317
|
+
);
|
|
318
|
+
|
|
319
|
+
// Initialize a new TigerBeetle client which connects to the addresses provided and
|
|
320
|
+
// completes submitted packets by invoking the callback with the given context.
|
|
321
|
+
TB_INIT_STATUS tb_client_init(
|
|
322
|
+
tb_client_t *client_out,
|
|
323
|
+
// 128-bit unsigned integer represented as a 16-byte little-endian array.
|
|
324
|
+
const uint8_t cluster_id[16],
|
|
325
|
+
const char *address_ptr,
|
|
326
|
+
uint32_t address_len,
|
|
327
|
+
uintptr_t completion_ctx,
|
|
328
|
+
tb_completion_t completion_callback
|
|
329
|
+
);
|
|
330
|
+
|
|
331
|
+
// Initialize a new TigerBeetle client that echoes back any submitted data.
|
|
332
|
+
TB_INIT_STATUS tb_client_init_echo(
|
|
333
|
+
tb_client_t *client_out,
|
|
334
|
+
// 128-bit unsigned integer represented as a 16-byte little-endian array.
|
|
335
|
+
const uint8_t cluster_id[16],
|
|
336
|
+
const char *address_ptr,
|
|
337
|
+
uint32_t address_len,
|
|
338
|
+
uintptr_t completion_ctx,
|
|
339
|
+
tb_completion_t completion_callback
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
// Retrieve the parameters initially passed to `tb_client_init` or `tb_client_init_echo`.
|
|
343
|
+
// Return value: `TB_CLIENT_OK` on success, or `TB_CLIENT_INVALID` if the client handle was
|
|
344
|
+
// not initialized or has already been closed.
|
|
345
|
+
TB_CLIENT_STATUS tb_client_init_parameters(
|
|
346
|
+
tb_client_t* client,
|
|
347
|
+
tb_init_parameters_t* init_parameters_out
|
|
348
|
+
);
|
|
349
|
+
|
|
350
|
+
// Retrieve the callback context initially passed to `tb_client_init` or `tb_client_init_echo`.
|
|
351
|
+
// Return value: `TB_CLIENT_OK` on success, or `TB_CLIENT_INVALID` if the client handle was
|
|
352
|
+
// not initialized or has already been closed.
|
|
353
|
+
TB_CLIENT_STATUS tb_client_completion_context(
|
|
354
|
+
tb_client_t* client,
|
|
355
|
+
uintptr_t* completion_ctx_out
|
|
356
|
+
);
|
|
357
|
+
|
|
358
|
+
// Submit a packet with its `operation`, `data`, and `data_size` fields set.
|
|
359
|
+
// Once completed, `completion_callback` will be invoked with `completion_ctx`
|
|
360
|
+
// and the given packet on the `tb_client` thread (separate from the caller's thread).
|
|
361
|
+
// Return value: `TB_CLIENT_OK` on success, or `TB_CLIENT_INVALID` if the client handle was
|
|
362
|
+
// not initialized or has already been closed.
|
|
363
|
+
TB_CLIENT_STATUS tb_client_submit(
|
|
364
|
+
tb_client_t *client,
|
|
365
|
+
tb_packet_t *packet
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
// Closes the client, causing any previously submitted packets to be completed with
|
|
369
|
+
// `TB_PACKET_CLIENT_SHUTDOWN` before freeing any allocated client resources from init.
|
|
370
|
+
// Return value: `TB_CLIENT_OK` on success, or `TB_CLIENT_INVALID` if the client handle was
|
|
371
|
+
// not initialized or has already been closed.
|
|
372
|
+
TB_CLIENT_STATUS tb_client_deinit(
|
|
373
|
+
tb_client_t *client
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
// Registers or unregisters the application log callback.
|
|
377
|
+
TB_REGISTER_LOG_CALLBACK_STATUS tb_client_register_log_callback(
|
|
378
|
+
void (*callback)(TB_LOG_LEVEL, const uint8_t*, uint32_t),
|
|
379
|
+
bool debug
|
|
380
|
+
);
|
|
381
|
+
|
|
382
|
+
#ifdef __cplusplus
|
|
383
|
+
} // extern "C"
|
|
384
|
+
#endif
|
|
385
|
+
|
|
386
|
+
#endif // TB_CLIENT_H
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const std = @import("std");
|
|
2
|
+
|
|
3
|
+
const Shell = @import("../../shell.zig");
|
|
4
|
+
const TmpTigerBeetle = @import("../../testing/tmp_tigerbeetle.zig");
|
|
5
|
+
|
|
6
|
+
pub fn tests(shell: *Shell, gpa: std.mem.Allocator) !void {
|
|
7
|
+
try shell.exec_zig("build clients:rust -Drelease", .{});
|
|
8
|
+
try shell.exec("cargo test --all", .{});
|
|
9
|
+
try shell.exec("cargo fmt --check", .{});
|
|
10
|
+
try shell.exec("cargo clippy -- -D clippy::all", .{});
|
|
11
|
+
|
|
12
|
+
inline for (.{ "basic", "two-phase", "two-phase-many", "walkthrough" }) |sample| {
|
|
13
|
+
try shell.pushd("./samples/" ++ sample);
|
|
14
|
+
defer shell.popd();
|
|
15
|
+
|
|
16
|
+
try shell.exec("cargo fmt --check", .{});
|
|
17
|
+
try shell.exec("cargo clippy -- -D clippy::all", .{});
|
|
18
|
+
|
|
19
|
+
var tmp_beetle = try TmpTigerBeetle.init(gpa, .{
|
|
20
|
+
.development = true,
|
|
21
|
+
});
|
|
22
|
+
defer tmp_beetle.deinit(gpa);
|
|
23
|
+
errdefer tmp_beetle.log_stderr();
|
|
24
|
+
|
|
25
|
+
try shell.env.put("TB_ADDRESS", tmp_beetle.port_str);
|
|
26
|
+
try shell.exec("cargo run", .{});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
pub fn validate_release(shell: *Shell, gpa: std.mem.Allocator, options: struct {
|
|
31
|
+
version: []const u8,
|
|
32
|
+
tigerbeetle: []const u8,
|
|
33
|
+
}) !void {
|
|
34
|
+
_ = shell;
|
|
35
|
+
_ = gpa;
|
|
36
|
+
_ = options;
|
|
37
|
+
// The Rust client is not yet published.
|
|
38
|
+
|
|
39
|
+
// const tmp_dir = try shell.create_tmp_dir();
|
|
40
|
+
// defer shell.cwd.deleteTree(tmp_dir) catch {};
|
|
41
|
+
|
|
42
|
+
// try shell.pushd(tmp_dir);
|
|
43
|
+
// defer shell.popd();
|
|
44
|
+
|
|
45
|
+
// var tmp_beetle = try TmpTigerBeetle.init(gpa, .{
|
|
46
|
+
// .development = true,
|
|
47
|
+
// .prebuilt = options.tigerbeetle,
|
|
48
|
+
// });
|
|
49
|
+
// defer tmp_beetle.deinit(gpa);
|
|
50
|
+
// errdefer tmp_beetle.log_stderr();
|
|
51
|
+
|
|
52
|
+
// try shell.env.put("TB_ADDRESS", tmp_beetle.port_str);
|
|
53
|
+
|
|
54
|
+
// // Create a new Rust project to test the published crate
|
|
55
|
+
// try shell.exec("cargo init --name test_tigerbeetle", .{});
|
|
56
|
+
|
|
57
|
+
// // Add tigerbeetle dependency to Cargo.toml
|
|
58
|
+
// try shell.exec("cargo add tigerbeetle@{version}", .{ .version = options.version });
|
|
59
|
+
// try shell.exec("cargo add futures@0.3", .{});
|
|
60
|
+
|
|
61
|
+
// try Shell.copy_path(
|
|
62
|
+
// shell.project_root,
|
|
63
|
+
// "src/clients/rust/samples/basic/src/main.rs",
|
|
64
|
+
// shell.cwd,
|
|
65
|
+
// "src/main.rs",
|
|
66
|
+
// );
|
|
67
|
+
// try shell.exec("cargo run", .{});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
pub fn release_published_latest(shell: *Shell) ![]const u8 {
|
|
71
|
+
_ = shell;
|
|
72
|
+
return "unimplemented";
|
|
73
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
const Docs = @import("../docs_types.zig").Docs;
|
|
2
|
+
|
|
3
|
+
pub const RustDocs = Docs{
|
|
4
|
+
.directory = "rust",
|
|
5
|
+
|
|
6
|
+
.markdown_name = "rust",
|
|
7
|
+
.extension = "rs",
|
|
8
|
+
.proper_name = "Rust",
|
|
9
|
+
|
|
10
|
+
.test_source_path = "src/",
|
|
11
|
+
|
|
12
|
+
.name = "tigerbeetle-rust",
|
|
13
|
+
.description =
|
|
14
|
+
\\The TigerBeetle client for Rust.
|
|
15
|
+
\\
|
|
16
|
+
\\[](https://crates.io/crates/tigerbeetle)
|
|
17
|
+
\\[](https://docs.rs/tigerbeetle)
|
|
18
|
+
,
|
|
19
|
+
|
|
20
|
+
.prerequisites =
|
|
21
|
+
\\* Rust 1.68+
|
|
22
|
+
,
|
|
23
|
+
|
|
24
|
+
.project_file_name = "Cargo.toml",
|
|
25
|
+
.project_file =
|
|
26
|
+
\\[package]
|
|
27
|
+
\\name = "tigerbeetle-test"
|
|
28
|
+
\\version = "0.1.0"
|
|
29
|
+
\\edition = "2024"
|
|
30
|
+
\\
|
|
31
|
+
\\[dependencies]
|
|
32
|
+
\\tigerbeetle.path = "../.."
|
|
33
|
+
\\futures = "0.3"
|
|
34
|
+
,
|
|
35
|
+
|
|
36
|
+
.test_file_name = "main",
|
|
37
|
+
|
|
38
|
+
.install_commands = "",
|
|
39
|
+
|
|
40
|
+
.run_commands = "cargo run",
|
|
41
|
+
|
|
42
|
+
.examples = "",
|
|
43
|
+
|
|
44
|
+
.client_object_documentation = "",
|
|
45
|
+
|
|
46
|
+
.create_accounts_documentation = "",
|
|
47
|
+
|
|
48
|
+
.account_flags_documentation =
|
|
49
|
+
\\To toggle behavior for an account, use the `AccountFlags` bitflags.
|
|
50
|
+
\\You can combine multiple flags using the `|` operator. Here are a
|
|
51
|
+
\\few examples:
|
|
52
|
+
\\
|
|
53
|
+
\\* `AccountFlags::Linked`
|
|
54
|
+
\\* `AccountFlags::DebitsMustNotExceedCredits`
|
|
55
|
+
\\* `AccountFlags::CreditsMustNotExceedDebits`
|
|
56
|
+
\\* `AccountFlags::History`
|
|
57
|
+
\\* `AccountFlags::Linked | AccountFlags::History`
|
|
58
|
+
,
|
|
59
|
+
|
|
60
|
+
.create_accounts_errors_documentation =
|
|
61
|
+
\\To handle errors, iterate over the `Vec<CreateAccountsResult>` returned
|
|
62
|
+
\\from `client.create_accounts()`. Each result contains an `index` field
|
|
63
|
+
\\to map back to the input account and a `result` field with the
|
|
64
|
+
\\`CreateAccountResult` enum.
|
|
65
|
+
,
|
|
66
|
+
|
|
67
|
+
.create_transfers_documentation =
|
|
68
|
+
\\Transfers support various types including regular, pending, linked,
|
|
69
|
+
\\and two-phase transfers. Use `TransferFlags` to specify behavior:
|
|
70
|
+
\\
|
|
71
|
+
\\```rust
|
|
72
|
+
\\let transfer = Transfer {
|
|
73
|
+
\\ id: tb::id(),
|
|
74
|
+
\\ debit_account_id: account1_id,
|
|
75
|
+
\\ credit_account_id: account2_id,
|
|
76
|
+
\\ amount: 100,
|
|
77
|
+
\\ ledger: 1,
|
|
78
|
+
\\ code: 1,
|
|
79
|
+
\\ flags: TransferFlags::Pending,
|
|
80
|
+
\\ ..Default::default()
|
|
81
|
+
\\};
|
|
82
|
+
\\```
|
|
83
|
+
\\
|
|
84
|
+
\\For linked transfers, set the `Linked` flag on all transfers in the
|
|
85
|
+
\\chain except the last one. If any transfer in a linked chain fails,
|
|
86
|
+
\\the entire chain is rolled back.
|
|
87
|
+
,
|
|
88
|
+
.create_transfers_errors_documentation =
|
|
89
|
+
\\To handle transfer errors, iterate over the `Vec<CreateTransfersResult>`
|
|
90
|
+
\\returned from `client.create_transfers()`. Each result contains an
|
|
91
|
+
\\`index` field to map back to the input transfer and a `result` field
|
|
92
|
+
\\with the `CreateTransferResult` enum.
|
|
93
|
+
,
|
|
94
|
+
|
|
95
|
+
.transfer_flags_documentation =
|
|
96
|
+
\\To toggle behavior for a transfer, use the `TransferFlags` bitflags.
|
|
97
|
+
\\You can combine multiple flags using the `|` operator. Here are a
|
|
98
|
+
\\few examples:
|
|
99
|
+
\\
|
|
100
|
+
\\* `TransferFlags::Linked`
|
|
101
|
+
\\* `TransferFlags::Pending`
|
|
102
|
+
\\* `TransferFlags::PostPendingTransfer`
|
|
103
|
+
\\* `TransferFlags::VoidPendingTransfer`
|
|
104
|
+
\\* `TransferFlags::Linked | TransferFlags::Pending`
|
|
105
|
+
,
|
|
106
|
+
};
|