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,157 @@
|
|
|
1
|
+
const Sample = @import("./docs_types.zig").Sample;
|
|
2
|
+
|
|
3
|
+
pub const samples = [_]Sample{
|
|
4
|
+
.{
|
|
5
|
+
.proper_name = "Basic",
|
|
6
|
+
.directory = "basic",
|
|
7
|
+
.short_description = "Create two accounts and transfer an amount between them.",
|
|
8
|
+
.long_description =
|
|
9
|
+
\\## 1. Create accounts
|
|
10
|
+
\\
|
|
11
|
+
\\This project starts by creating two accounts (`1` and `2`).
|
|
12
|
+
\\
|
|
13
|
+
\\## 2. Create a transfer
|
|
14
|
+
\\
|
|
15
|
+
\\Then it transfers `10` of an amount from account `1` to
|
|
16
|
+
\\account `2`.
|
|
17
|
+
\\
|
|
18
|
+
\\## 3. Fetch and validate account balances
|
|
19
|
+
\\
|
|
20
|
+
\\Then it fetches both accounts, checks they both exist, and
|
|
21
|
+
\\checks that **account `1`** has:
|
|
22
|
+
\\ * `debits_posted = 10`
|
|
23
|
+
\\ * and `credits_posted = 0`
|
|
24
|
+
\\
|
|
25
|
+
\\And that **account `2`** has:
|
|
26
|
+
\\ * `debits_posted= 0`
|
|
27
|
+
\\ * and `credits_posted = 10`
|
|
28
|
+
,
|
|
29
|
+
},
|
|
30
|
+
.{
|
|
31
|
+
.proper_name = "Two-Phase Transfer",
|
|
32
|
+
.directory = "two-phase",
|
|
33
|
+
.short_description =
|
|
34
|
+
\\Create two accounts and start a pending transfer between
|
|
35
|
+
\\them, then post the transfer.
|
|
36
|
+
,
|
|
37
|
+
.long_description =
|
|
38
|
+
\\## 1. Create accounts
|
|
39
|
+
\\
|
|
40
|
+
\\This project starts by creating two accounts (`1` and `2`).
|
|
41
|
+
\\
|
|
42
|
+
\\## 2. Create pending transfer
|
|
43
|
+
\\
|
|
44
|
+
\\Then it begins a
|
|
45
|
+
\\pending transfer of `500` of an amount from account `1` to
|
|
46
|
+
\\account `2`.
|
|
47
|
+
\\
|
|
48
|
+
\\## 3. Fetch and validate pending account balances
|
|
49
|
+
\\
|
|
50
|
+
\\Then it fetches both accounts and validates that **account `1`** has:
|
|
51
|
+
\\ * `debits_posted = 0`
|
|
52
|
+
\\ * `credits_posted = 0`
|
|
53
|
+
\\ * `debits_pending = 500`
|
|
54
|
+
\\ * and `credits_pending = 0`
|
|
55
|
+
\\
|
|
56
|
+
\\And that **account `2`** has:
|
|
57
|
+
\\ * `debits_posted = 0`
|
|
58
|
+
\\ * `credits_posted = 0`
|
|
59
|
+
\\ * `debits_pending = 0`
|
|
60
|
+
\\ * and `credits_pending = 500`
|
|
61
|
+
\\
|
|
62
|
+
\\(This is because a pending
|
|
63
|
+
\\transfer only affects **pending** credits and debits on accounts,
|
|
64
|
+
\\not **posted** credits and debits.)
|
|
65
|
+
\\
|
|
66
|
+
\\## 4. Post pending transfer
|
|
67
|
+
\\
|
|
68
|
+
\\Then it creates a second transfer that marks the first
|
|
69
|
+
\\transfer as posted.
|
|
70
|
+
\\
|
|
71
|
+
\\## 5. Fetch and validate transfers
|
|
72
|
+
\\
|
|
73
|
+
\\Then it fetches both transfers, validates
|
|
74
|
+
\\that the two transfers exist, validates that the first
|
|
75
|
+
\\transfer had (and still has) a `pending` flag, and validates
|
|
76
|
+
\\that the second transfer had (and still has) a
|
|
77
|
+
\\`post_pending_transfer` flag.
|
|
78
|
+
\\
|
|
79
|
+
\\## 6. Fetch and validate final account balances
|
|
80
|
+
\\
|
|
81
|
+
\\Finally, it fetches both accounts, validates that both exist,
|
|
82
|
+
\\and checks that credits and debits for both accounts are now
|
|
83
|
+
\\*posted*, not pending.
|
|
84
|
+
\\
|
|
85
|
+
\\Specifically, that **account `1`** has:
|
|
86
|
+
\\ * `debits_posted = 500`
|
|
87
|
+
\\ * `credits_posted = 0`
|
|
88
|
+
\\ * `debits_pending = 0`
|
|
89
|
+
\\ * and `credits_pending = 0`
|
|
90
|
+
\\
|
|
91
|
+
\\And that **account `2`** has:
|
|
92
|
+
\\ * `debits_posted = 0`
|
|
93
|
+
\\ * `credits_posted = 500`
|
|
94
|
+
\\ * `debits_pending = 0`
|
|
95
|
+
\\ * and `credits_pending = 0`
|
|
96
|
+
,
|
|
97
|
+
},
|
|
98
|
+
.{
|
|
99
|
+
.proper_name = "Many Two-Phase Transfers",
|
|
100
|
+
.directory = "two-phase-many",
|
|
101
|
+
.short_description =
|
|
102
|
+
\\Create two accounts and start a number of pending transfers
|
|
103
|
+
\\between them, posting and voiding alternating transfers.
|
|
104
|
+
,
|
|
105
|
+
.long_description =
|
|
106
|
+
\\## 1. Create accounts
|
|
107
|
+
\\
|
|
108
|
+
\\This project starts by creating two accounts (`1` and `2`).
|
|
109
|
+
\\
|
|
110
|
+
\\## 2. Create pending transfers
|
|
111
|
+
\\
|
|
112
|
+
\\Then it begins 5 pending transfers of amounts `100` to
|
|
113
|
+
\\`500`, incrementing by `100` for each transfer.
|
|
114
|
+
\\
|
|
115
|
+
\\## 3. Fetch and validate pending account balances
|
|
116
|
+
\\
|
|
117
|
+
\\Then it fetches both accounts and validates that **account `1`** has:
|
|
118
|
+
\\ * `debits_posted = 0`
|
|
119
|
+
\\ * `credits_posted = 0`
|
|
120
|
+
\\ * `debits_pending = 1500`
|
|
121
|
+
\\ * and `credits_pending = 0`
|
|
122
|
+
\\
|
|
123
|
+
\\And that **account `2`** has:
|
|
124
|
+
\\ * `debits_posted = 0`
|
|
125
|
+
\\ * `credits_posted = 0`
|
|
126
|
+
\\ * `debits_pending = 0`
|
|
127
|
+
\\ * and `credits_pending = 1500`
|
|
128
|
+
\\
|
|
129
|
+
\\(This is because a pending transfer only affects **pending**
|
|
130
|
+
\\credits and debits on accounts, not **posted** credits and
|
|
131
|
+
\\debits.)
|
|
132
|
+
\\
|
|
133
|
+
\\## 4. Post and void alternating transfers
|
|
134
|
+
\\
|
|
135
|
+
\\Then it alternatively posts and voids each transfer,
|
|
136
|
+
\\checking account balances after each transfer.
|
|
137
|
+
\\
|
|
138
|
+
\\## 6. Fetch and validate final account balances
|
|
139
|
+
\\
|
|
140
|
+
\\Finally, it fetches both accounts, validates that both exist,
|
|
141
|
+
\\and checks that credits and debits for both accounts are now
|
|
142
|
+
\\solely *posted*, not pending.
|
|
143
|
+
\\
|
|
144
|
+
\\Specifically, that **account `1`** has:
|
|
145
|
+
\\ * `debits_posted = 900`
|
|
146
|
+
\\ * `credits_posted = 0`
|
|
147
|
+
\\ * `debits_pending = 0`
|
|
148
|
+
\\ * and `credits_pending = 0`
|
|
149
|
+
\\
|
|
150
|
+
\\And that **account `2`** has:
|
|
151
|
+
\\ * `debits_posted = 0`
|
|
152
|
+
\\ * `credits_posted = 900`
|
|
153
|
+
\\ * `debits_pending = 0`
|
|
154
|
+
\\ * and `credits_pending = 0`
|
|
155
|
+
,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// The purpose of these types is to help in reading this doc, not
|
|
2
|
+
// because the types matter.
|
|
3
|
+
const String = []const u8;
|
|
4
|
+
|
|
5
|
+
// All Code variables are potentially tested and run in CI.
|
|
6
|
+
const Code = []const u8;
|
|
7
|
+
|
|
8
|
+
// All Markdown strings are never tested and run in CI.
|
|
9
|
+
const Markdown = []const u8;
|
|
10
|
+
|
|
11
|
+
pub const Docs = struct {
|
|
12
|
+
// Name of the directory (relative to /src/clients)
|
|
13
|
+
directory: String,
|
|
14
|
+
|
|
15
|
+
// Package name (i.e. tigerbeetle-go, tigerbeetle-node, etc.)
|
|
16
|
+
name: String,
|
|
17
|
+
|
|
18
|
+
// Name for syntax highlighting (i.e. javascript for node, go for go, etc.)
|
|
19
|
+
markdown_name: String,
|
|
20
|
+
|
|
21
|
+
// File extension without dot (i.e. js, go, etc.)
|
|
22
|
+
extension: String,
|
|
23
|
+
|
|
24
|
+
// For the title of the page on the docs site.
|
|
25
|
+
proper_name: String,
|
|
26
|
+
|
|
27
|
+
// Introduction to the client. Links to docs or build badges or
|
|
28
|
+
// whatnot.
|
|
29
|
+
description: Markdown,
|
|
30
|
+
|
|
31
|
+
// Any libraries or languages and their required versions for
|
|
32
|
+
// using, not necessarily hacking on, this client.
|
|
33
|
+
prerequisites: Markdown,
|
|
34
|
+
|
|
35
|
+
// If you need an additional project file like pom.xml or
|
|
36
|
+
// package.json. Leave blank if not needed.
|
|
37
|
+
project_file_name: String,
|
|
38
|
+
// The actual contents of the file. Leave blank if not needed.
|
|
39
|
+
project_file: Code,
|
|
40
|
+
|
|
41
|
+
// If you need to override the default name of test.${extension}
|
|
42
|
+
// such as when file names have meaning (i.e. Java).
|
|
43
|
+
test_file_name: String,
|
|
44
|
+
|
|
45
|
+
// Any setup needed for a project before compiling and running
|
|
46
|
+
// such as `go mod init myProject && go mod tidy` or `npm install
|
|
47
|
+
// tigerbeetle-node`.
|
|
48
|
+
install_commands: Code,
|
|
49
|
+
|
|
50
|
+
// Commands for building and running code.
|
|
51
|
+
run_commands: Code,
|
|
52
|
+
|
|
53
|
+
// If you want to include links to examples.
|
|
54
|
+
examples: Markdown,
|
|
55
|
+
|
|
56
|
+
client_object_documentation: Markdown,
|
|
57
|
+
|
|
58
|
+
create_accounts_documentation: Markdown,
|
|
59
|
+
|
|
60
|
+
create_accounts_errors_documentation: Markdown,
|
|
61
|
+
|
|
62
|
+
account_flags_documentation: Markdown,
|
|
63
|
+
|
|
64
|
+
create_transfers_documentation: Markdown,
|
|
65
|
+
|
|
66
|
+
create_transfers_errors_documentation: Markdown,
|
|
67
|
+
|
|
68
|
+
// Good example of using batches to create transfers.
|
|
69
|
+
// Bad example of not using batches well to create transfers.
|
|
70
|
+
|
|
71
|
+
transfer_flags_documentation: Markdown,
|
|
72
|
+
|
|
73
|
+
// Optional prefix if test code must be in a certain directory
|
|
74
|
+
// (e.g. Java and `src/main/java`).
|
|
75
|
+
test_source_path: String,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
pub const Sample = struct {
|
|
79
|
+
// Capitalized name of the sample program
|
|
80
|
+
proper_name: String,
|
|
81
|
+
|
|
82
|
+
// e.g. `basic`, `two-phase`, etc.
|
|
83
|
+
directory: String,
|
|
84
|
+
|
|
85
|
+
// For use in the language primary README
|
|
86
|
+
short_description: String,
|
|
87
|
+
|
|
88
|
+
// For use as the introduction on the individual sample README
|
|
89
|
+
long_description: String,
|
|
90
|
+
};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
const std = @import("std");
|
|
2
|
+
const builtin = @import("builtin");
|
|
3
|
+
const log = std.log;
|
|
4
|
+
const assert = std.debug.assert;
|
|
5
|
+
|
|
6
|
+
const Shell = @import("../../shell.zig");
|
|
7
|
+
const TmpTigerBeetle = @import("../../testing/tmp_tigerbeetle.zig");
|
|
8
|
+
|
|
9
|
+
pub fn tests(shell: *Shell, gpa: std.mem.Allocator) !void {
|
|
10
|
+
assert(shell.file_exists("TigerBeetle.sln"));
|
|
11
|
+
|
|
12
|
+
try shell.exec_zig("build clients:dotnet -Drelease", .{});
|
|
13
|
+
try shell.exec_zig("build -Drelease", .{});
|
|
14
|
+
|
|
15
|
+
try shell.exec("dotnet restore", .{});
|
|
16
|
+
try shell.exec("dotnet format --no-restore --verify-no-changes", .{});
|
|
17
|
+
|
|
18
|
+
// Unit tests.
|
|
19
|
+
try shell.exec("dotnet build --no-restore --configuration Release", .{});
|
|
20
|
+
// Disable coverage on CI, as it is flaky, see
|
|
21
|
+
// <https://github.com/coverlet-coverage/coverlet/issues/865>
|
|
22
|
+
try shell.exec(
|
|
23
|
+
\\dotnet test --no-restore
|
|
24
|
+
\\ --logger:{logger}
|
|
25
|
+
\\ /p:CollectCoverage=false
|
|
26
|
+
\\ /p:Threshold={threshold}
|
|
27
|
+
\\ /p:ThresholdType={threshold_type}
|
|
28
|
+
, .{
|
|
29
|
+
// Dotnet wants quotes inside the argument.
|
|
30
|
+
.logger = "\"console;verbosity=detailed\"",
|
|
31
|
+
.threshold = "\"95,85,95\"",
|
|
32
|
+
.threshold_type = "\"line,branch,method\"",
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Integration tests.
|
|
36
|
+
inline for (.{ "basic", "two-phase", "two-phase-many", "walkthrough" }) |sample| {
|
|
37
|
+
log.info("testing sample '{s}'", .{sample});
|
|
38
|
+
|
|
39
|
+
try shell.pushd("./samples/" ++ sample);
|
|
40
|
+
defer shell.popd();
|
|
41
|
+
|
|
42
|
+
var tmp_beetle = try TmpTigerBeetle.init(gpa, .{
|
|
43
|
+
.development = true,
|
|
44
|
+
});
|
|
45
|
+
defer tmp_beetle.deinit(gpa);
|
|
46
|
+
errdefer tmp_beetle.log_stderr();
|
|
47
|
+
|
|
48
|
+
try shell.env.put("TB_ADDRESS", tmp_beetle.port_str);
|
|
49
|
+
try shell.exec("dotnet run", .{});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Container smoke tests.
|
|
53
|
+
if (builtin.target.os.tag == .linux) {
|
|
54
|
+
// Here, we want to check that our package does not break horrible on upstream containers
|
|
55
|
+
// due to missing runtime dependencies, mismatched glibc ABI and similar issues.
|
|
56
|
+
//
|
|
57
|
+
// We don't necessary want to be able to _build_ code inside such a container, we only
|
|
58
|
+
// need to check that pre-built code runs successfully. So, build a package on host,
|
|
59
|
+
// mount it inside the container and smoke test.
|
|
60
|
+
//
|
|
61
|
+
// We run an sh script inside a container, because it is trivial. If it grows larger,
|
|
62
|
+
// we should consider running a proper zig program inside.
|
|
63
|
+
try shell.exec("dotnet pack --configuration Release", .{});
|
|
64
|
+
|
|
65
|
+
const image_tags = .{
|
|
66
|
+
"8.0", "8.0-alpine",
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
inline for (image_tags) |image_tag| {
|
|
70
|
+
const image = "mcr.microsoft.com/dotnet/sdk:" ++ image_tag;
|
|
71
|
+
log.info("testing docker image: '{s}'", .{image});
|
|
72
|
+
|
|
73
|
+
for (0..5) |attempt| {
|
|
74
|
+
if (attempt > 0) std.time.sleep(1 * std.time.ns_per_min);
|
|
75
|
+
if (shell.exec("docker image pull {image}", .{ .image = image })) {
|
|
76
|
+
break;
|
|
77
|
+
} else |_| {}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
try shell.exec(
|
|
81
|
+
\\docker run
|
|
82
|
+
\\--security-opt seccomp=unconfined
|
|
83
|
+
\\--volume ./TigerBeetle/bin/Release:/host
|
|
84
|
+
\\{image}
|
|
85
|
+
\\sh
|
|
86
|
+
\\-c {script}
|
|
87
|
+
, .{
|
|
88
|
+
.image = image,
|
|
89
|
+
.script =
|
|
90
|
+
\\set -ex
|
|
91
|
+
\\mkdir test-project && cd test-project
|
|
92
|
+
\\dotnet nuget add source /host
|
|
93
|
+
\\dotnet new console
|
|
94
|
+
\\dotnet add package tigerbeetle --source /host > /dev/null
|
|
95
|
+
\\cat <<EOF > Program.cs
|
|
96
|
+
\\using System;
|
|
97
|
+
\\using TigerBeetle;
|
|
98
|
+
\\public class Program {
|
|
99
|
+
\\ public static void Main() {
|
|
100
|
+
\\ new Client(UInt128.Zero, new [] {"3001"}).Dispose();
|
|
101
|
+
\\ Console.WriteLine("SUCCESS");
|
|
102
|
+
\\ }
|
|
103
|
+
\\}
|
|
104
|
+
\\EOF
|
|
105
|
+
\\dotnet run
|
|
106
|
+
,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
pub fn validate_release(shell: *Shell, gpa: std.mem.Allocator, options: struct {
|
|
113
|
+
version: []const u8,
|
|
114
|
+
tigerbeetle: []const u8,
|
|
115
|
+
}) !void {
|
|
116
|
+
var tmp_beetle = try TmpTigerBeetle.init(gpa, .{
|
|
117
|
+
.development = true,
|
|
118
|
+
.prebuilt = options.tigerbeetle,
|
|
119
|
+
});
|
|
120
|
+
defer tmp_beetle.deinit(gpa);
|
|
121
|
+
errdefer tmp_beetle.log_stderr();
|
|
122
|
+
|
|
123
|
+
try shell.env.put("TB_ADDRESS", tmp_beetle.port_str);
|
|
124
|
+
try shell.exec("dotnet new console", .{});
|
|
125
|
+
|
|
126
|
+
// NuGet may take a few minutes to make the new package available for download.
|
|
127
|
+
for (0..9) |_| {
|
|
128
|
+
if (try nuget_install(shell, .{ .version = options.version }) == .ok) break;
|
|
129
|
+
log.warn("waiting for 5 minutes for the {s} version to appear in nuget.org", .{
|
|
130
|
+
options.version,
|
|
131
|
+
});
|
|
132
|
+
std.time.sleep(5 * std.time.ns_per_min);
|
|
133
|
+
} else {
|
|
134
|
+
switch (try nuget_install(shell, .{ .version = options.version })) {
|
|
135
|
+
.ok => {},
|
|
136
|
+
.retry => |err| {
|
|
137
|
+
log.err("package is not available in nuget.org", .{});
|
|
138
|
+
return err;
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
try Shell.copy_path(
|
|
144
|
+
shell.project_root,
|
|
145
|
+
"src/clients/dotnet/samples/basic/Program.cs",
|
|
146
|
+
shell.cwd,
|
|
147
|
+
"Program.cs",
|
|
148
|
+
);
|
|
149
|
+
try shell.exec("dotnet run", .{});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
fn nuget_install(shell: *Shell, options: struct {
|
|
153
|
+
version: []const u8,
|
|
154
|
+
}) !union(enum) { ok, retry: anyerror } {
|
|
155
|
+
const command: []const u8 = "dotnet add package tigerbeetle --version {version}";
|
|
156
|
+
if (shell.exec(command, options)) {
|
|
157
|
+
return .ok;
|
|
158
|
+
} else |err| {
|
|
159
|
+
const exec_result = try shell.exec_raw(command, options);
|
|
160
|
+
switch (exec_result.term) {
|
|
161
|
+
.Exited => |code| if (code == 0) return .ok,
|
|
162
|
+
else => {},
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Error message:
|
|
166
|
+
// NU1102: Unable to find package tigerbeetle with version (>= {version}).
|
|
167
|
+
const package_missing = std.mem.indexOf(
|
|
168
|
+
u8,
|
|
169
|
+
exec_result.stdout,
|
|
170
|
+
"NU1102",
|
|
171
|
+
) != null;
|
|
172
|
+
if (package_missing) return .{ .retry = err };
|
|
173
|
+
return err;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
pub fn release_published_latest(shell: *Shell) ![]const u8 {
|
|
178
|
+
const DotnetSearch = struct {
|
|
179
|
+
const SearchResult = struct {
|
|
180
|
+
const Packages = struct {
|
|
181
|
+
id: []const u8,
|
|
182
|
+
latestVersion: []const u8,
|
|
183
|
+
};
|
|
184
|
+
packages: []Packages,
|
|
185
|
+
};
|
|
186
|
+
searchResult: []SearchResult,
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const output = try shell.exec_stdout("dotnet package search tigerbeetle --format json", .{});
|
|
190
|
+
const dotnet_search_results = try std.json.parseFromSliceLeaky(
|
|
191
|
+
DotnetSearch,
|
|
192
|
+
shell.arena.allocator(),
|
|
193
|
+
output,
|
|
194
|
+
.{ .ignore_unknown_fields = true },
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
assert(dotnet_search_results.searchResult.len == 1);
|
|
198
|
+
assert(dotnet_search_results.searchResult[0].packages.len == 1);
|
|
199
|
+
|
|
200
|
+
assert(std.mem.eql(u8, dotnet_search_results.searchResult[0].packages[0].id, "tigerbeetle"));
|
|
201
|
+
|
|
202
|
+
return dotnet_search_results.searchResult[0].packages[0].latestVersion;
|
|
203
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const Docs = @import("../docs_types.zig").Docs;
|
|
2
|
+
|
|
3
|
+
pub const DotnetDocs = Docs{
|
|
4
|
+
.directory = "dotnet",
|
|
5
|
+
|
|
6
|
+
.markdown_name = "cs",
|
|
7
|
+
.extension = "cs",
|
|
8
|
+
.proper_name = ".NET",
|
|
9
|
+
|
|
10
|
+
.test_source_path = "",
|
|
11
|
+
|
|
12
|
+
.name = "tigerbeetle-dotnet",
|
|
13
|
+
.description =
|
|
14
|
+
\\The TigerBeetle client for .NET.
|
|
15
|
+
,
|
|
16
|
+
|
|
17
|
+
.prerequisites =
|
|
18
|
+
\\* .NET >= 8.0.
|
|
19
|
+
\\
|
|
20
|
+
\\And if you do not already have NuGet.org as a package
|
|
21
|
+
\\source, make sure to add it:
|
|
22
|
+
\\
|
|
23
|
+
\\```console
|
|
24
|
+
\\dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
|
|
25
|
+
\\```
|
|
26
|
+
,
|
|
27
|
+
|
|
28
|
+
.project_file_name = "",
|
|
29
|
+
.project_file = "",
|
|
30
|
+
|
|
31
|
+
.test_file_name = "Program",
|
|
32
|
+
|
|
33
|
+
.install_commands =
|
|
34
|
+
\\dotnet new console
|
|
35
|
+
\\dotnet add package tigerbeetle
|
|
36
|
+
,
|
|
37
|
+
.run_commands = "dotnet run",
|
|
38
|
+
|
|
39
|
+
.examples = "",
|
|
40
|
+
|
|
41
|
+
.client_object_documentation = "",
|
|
42
|
+
.create_accounts_documentation =
|
|
43
|
+
\\The `UInt128` fields like `ID`, `UserData128`, `Amount` and
|
|
44
|
+
\\account balances have a few extension methods to make it easier
|
|
45
|
+
\\to convert 128-bit little-endian unsigned integers between
|
|
46
|
+
\\`BigInteger`, `byte[]`, and `Guid`.
|
|
47
|
+
\\
|
|
48
|
+
\\See the class [UInt128Extensions](/src/clients/dotnet/TigerBeetle/UInt128Extensions.cs)
|
|
49
|
+
\\for more details.
|
|
50
|
+
,
|
|
51
|
+
|
|
52
|
+
.account_flags_documentation =
|
|
53
|
+
\\To toggle behavior for an account, combine enum values stored in the
|
|
54
|
+
\\`AccountFlags` object with bitwise-or:
|
|
55
|
+
\\
|
|
56
|
+
\\* `AccountFlags.None`
|
|
57
|
+
\\* `AccountFlags.Linked`
|
|
58
|
+
\\* `AccountFlags.DebitsMustNotExceedCredits`
|
|
59
|
+
\\* `AccountFlags.CreditsMustNotExceedDebits`
|
|
60
|
+
\\* `AccountFlags.History`
|
|
61
|
+
,
|
|
62
|
+
|
|
63
|
+
.create_accounts_errors_documentation = "",
|
|
64
|
+
|
|
65
|
+
.create_transfers_documentation = "",
|
|
66
|
+
|
|
67
|
+
.create_transfers_errors_documentation = "",
|
|
68
|
+
|
|
69
|
+
.transfer_flags_documentation =
|
|
70
|
+
\\To toggle behavior for an account, combine enum values stored in the
|
|
71
|
+
\\`TransferFlags` object with bitwise-or:
|
|
72
|
+
\\
|
|
73
|
+
\\* `TransferFlags.None`
|
|
74
|
+
\\* `TransferFlags.Linked`
|
|
75
|
+
\\* `TransferFlags.Pending`
|
|
76
|
+
\\* `TransferFlags.PostPendingTransfer`
|
|
77
|
+
\\* `TransferFlags.VoidPendingTransfer`
|
|
78
|
+
,
|
|
79
|
+
};
|