tigerbeetle-node 0.5.1 → 0.8.0
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.
- package/README.md +88 -69
- package/dist/benchmark.js +96 -94
- package/dist/benchmark.js.map +1 -1
- package/dist/index.d.ts +82 -82
- package/dist/index.js +74 -93
- package/dist/index.js.map +1 -1
- package/dist/test.js +134 -111
- package/dist/test.js.map +1 -1
- package/package.json +3 -2
- package/src/benchmark.ts +114 -118
- package/src/index.ts +102 -111
- package/src/node.zig +54 -62
- package/src/test.ts +146 -125
- package/src/tigerbeetle/scripts/benchmark.bat +46 -0
- package/src/tigerbeetle/scripts/benchmark.sh +5 -0
- package/src/tigerbeetle/scripts/install_zig.bat +2 -2
- package/src/tigerbeetle/scripts/install_zig.sh +3 -3
- package/src/tigerbeetle/scripts/vopr.sh +2 -2
- package/src/tigerbeetle/src/benchmark.zig +65 -102
- package/src/tigerbeetle/src/cli.zig +39 -18
- package/src/tigerbeetle/src/config.zig +27 -12
- package/src/tigerbeetle/src/demo.zig +1 -14
- package/src/tigerbeetle/src/demo_01_create_accounts.zig +10 -10
- package/src/tigerbeetle/src/demo_03_create_transfers.zig +3 -1
- package/src/tigerbeetle/src/{demo_04_create_transfers_two_phase_commit.zig → demo_04_create_pending_transfers.zig} +12 -6
- package/src/tigerbeetle/src/demo_05_post_pending_transfers.zig +37 -0
- package/src/tigerbeetle/src/demo_06_void_pending_transfers.zig +24 -0
- package/src/tigerbeetle/src/demo_07_lookup_transfers.zig +1 -1
- package/src/tigerbeetle/src/io/benchmark.zig +24 -49
- package/src/tigerbeetle/src/io/darwin.zig +175 -44
- package/src/tigerbeetle/src/io/linux.zig +177 -72
- package/src/tigerbeetle/src/io/test.zig +61 -39
- package/src/tigerbeetle/src/io/windows.zig +1161 -0
- package/src/tigerbeetle/src/io.zig +2 -0
- package/src/tigerbeetle/src/main.zig +14 -9
- package/src/tigerbeetle/src/message_bus.zig +56 -74
- package/src/tigerbeetle/src/message_pool.zig +63 -57
- package/src/tigerbeetle/src/ring_buffer.zig +7 -0
- package/src/tigerbeetle/src/simulator.zig +4 -4
- package/src/tigerbeetle/src/state_machine.zig +1804 -797
- package/src/tigerbeetle/src/storage.zig +0 -230
- package/src/tigerbeetle/src/test/cluster.zig +3 -6
- package/src/tigerbeetle/src/test/message_bus.zig +4 -3
- package/src/tigerbeetle/src/test/network.zig +13 -16
- package/src/tigerbeetle/src/test/state_checker.zig +3 -2
- package/src/tigerbeetle/src/tigerbeetle.zig +108 -101
- package/src/tigerbeetle/src/time.zig +58 -11
- package/src/tigerbeetle/src/vsr/client.zig +18 -32
- package/src/tigerbeetle/src/vsr/clock.zig +1 -1
- package/src/tigerbeetle/src/vsr/journal.zig +2 -6
- package/src/tigerbeetle/src/vsr/replica.zig +152 -175
- package/src/tigerbeetle/src/vsr.zig +263 -5
- package/src/translate.zig +10 -0
- package/src/tigerbeetle/src/demo_05_accept_transfers.zig +0 -23
- package/src/tigerbeetle/src/demo_06_reject_transfers.zig +0 -17
- package/src/tigerbeetle/src/format_test.zig +0 -69
package/src/index.ts
CHANGED
|
@@ -24,13 +24,13 @@ export type Account = {
|
|
|
24
24
|
id: bigint // u128
|
|
25
25
|
user_data: bigint // u128
|
|
26
26
|
reserved: Buffer // [48]u8
|
|
27
|
-
|
|
27
|
+
ledger: number // u32, ledger of value
|
|
28
28
|
code: number // u16, A chart of accounts code describing the type of account (e.g. clearing, settlement)
|
|
29
|
-
flags: number //
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
flags: number // u16
|
|
30
|
+
debits_pending: bigint // u64
|
|
31
|
+
debits_posted: bigint // u64
|
|
32
|
+
credits_pending: bigint // u64
|
|
33
|
+
credits_posted: bigint // u64
|
|
34
34
|
timestamp: bigint // u64, Set this to 0n - the actual value will be set by TigerBeetle server
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -41,17 +41,33 @@ export enum AccountFlags {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export enum CreateAccountError {
|
|
44
|
+
// ok = 0 (No Error)
|
|
44
45
|
linked_event_failed = 1,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
|
|
47
|
+
reserved_flag,
|
|
48
|
+
reserved_field,
|
|
49
|
+
|
|
50
|
+
id_must_not_be_zero,
|
|
51
|
+
ledger_must_not_be_zero,
|
|
52
|
+
code_must_not_be_zero,
|
|
53
|
+
|
|
54
|
+
mutually_exclusive_flags,
|
|
55
|
+
|
|
56
|
+
overflows_debits,
|
|
57
|
+
overflows_credits,
|
|
58
|
+
|
|
51
59
|
exceeds_credits,
|
|
52
60
|
exceeds_debits,
|
|
53
|
-
|
|
54
|
-
|
|
61
|
+
|
|
62
|
+
exists_with_different_flags,
|
|
63
|
+
exists_with_different_user_data,
|
|
64
|
+
exists_with_different_ledger,
|
|
65
|
+
exists_with_different_code,
|
|
66
|
+
exists_with_different_debits_pending,
|
|
67
|
+
exists_with_different_debits_posted,
|
|
68
|
+
exists_with_different_credits_pending,
|
|
69
|
+
exists_with_different_credits_posted,
|
|
70
|
+
exists,
|
|
55
71
|
}
|
|
56
72
|
|
|
57
73
|
export type CreateAccountsError = {
|
|
@@ -64,102 +80,107 @@ export type Transfer = {
|
|
|
64
80
|
debit_account_id: bigint, // u128
|
|
65
81
|
credit_account_id: bigint, // u128
|
|
66
82
|
user_data: bigint, // u128
|
|
67
|
-
reserved:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
reserved: bigint, // u128
|
|
84
|
+
pending_id: bigint, // u128
|
|
85
|
+
timeout: bigint, // u64, In nanoseconds.
|
|
86
|
+
ledger: number // u32, The ledger of value.
|
|
87
|
+
code: number, // u16, A user-defined accounting code to describe the type of transfer (e.g. settlement).
|
|
88
|
+
flags: number, // u16
|
|
71
89
|
amount: bigint, // u64,
|
|
72
|
-
timestamp: bigint, // u64, Set this to 0n - the
|
|
90
|
+
timestamp: bigint, // u64, Set this to 0n - the timestamp will be set by TigerBeetle.
|
|
73
91
|
}
|
|
74
92
|
|
|
75
93
|
export enum TransferFlags {
|
|
76
94
|
linked = (1 << 0),
|
|
77
|
-
|
|
78
|
-
|
|
95
|
+
pending = (1 << 1),
|
|
96
|
+
post_pending_transfer = (1 << 2),
|
|
97
|
+
void_pending_transfer = (1 << 3)
|
|
79
98
|
}
|
|
80
99
|
|
|
81
100
|
export enum CreateTransferError {
|
|
101
|
+
// ok = 0 (No Error)
|
|
82
102
|
linked_event_failed = 1,
|
|
83
|
-
|
|
103
|
+
|
|
104
|
+
reserved_flag,
|
|
105
|
+
reserved_field,
|
|
106
|
+
|
|
107
|
+
id_must_not_be_zero,
|
|
108
|
+
debit_account_id_must_not_be_zero,
|
|
109
|
+
credit_account_id_must_not_be_zero,
|
|
110
|
+
accounts_must_be_different,
|
|
111
|
+
|
|
112
|
+
pending_id_must_be_zero,
|
|
113
|
+
pending_transfer_must_timeout,
|
|
114
|
+
|
|
115
|
+
ledger_must_not_be_zero,
|
|
116
|
+
code_must_not_be_zero,
|
|
117
|
+
amount_must_not_be_zero,
|
|
118
|
+
|
|
119
|
+
debit_account_not_found,
|
|
120
|
+
credit_account_not_found,
|
|
121
|
+
|
|
122
|
+
accounts_must_have_the_same_ledger,
|
|
123
|
+
transfer_must_have_the_same_ledger_as_accounts,
|
|
124
|
+
|
|
125
|
+
exists_with_different_flags,
|
|
84
126
|
exists_with_different_debit_account_id,
|
|
85
127
|
exists_with_different_credit_account_id,
|
|
86
128
|
exists_with_different_user_data,
|
|
87
|
-
|
|
129
|
+
exists_with_different_pending_id,
|
|
130
|
+
exists_with_different_timeout,
|
|
88
131
|
exists_with_different_code,
|
|
89
132
|
exists_with_different_amount,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
accounts_have_different_units,
|
|
100
|
-
amount_is_zero,
|
|
133
|
+
exists,
|
|
134
|
+
|
|
135
|
+
overflows_debits_pending,
|
|
136
|
+
overflows_credits_pending,
|
|
137
|
+
overflows_debits_posted,
|
|
138
|
+
overflows_credits_posted,
|
|
139
|
+
overflows_debits,
|
|
140
|
+
overflows_credits,
|
|
141
|
+
|
|
101
142
|
exceeds_credits,
|
|
102
143
|
exceeds_debits,
|
|
103
|
-
two_phase_commit_must_timeout,
|
|
104
|
-
timeout_reserved_for_two_phase_commit,
|
|
105
|
-
}
|
|
106
144
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
145
|
+
cannot_post_and_void_pending_transfer,
|
|
146
|
+
pending_transfer_cannot_post_or_void_another,
|
|
147
|
+
timeout_reserved_for_pending_transfer,
|
|
111
148
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
reserved: Buffer, // [32]u8
|
|
115
|
-
code: number, // u32 accounting system code describing the reason for accept/reject
|
|
116
|
-
flags: number, // u32
|
|
117
|
-
timestamp: bigint, // u64, Set this to 0n - the actual value will be set by TigerBeetle server
|
|
118
|
-
}
|
|
149
|
+
pending_id_must_not_be_zero,
|
|
150
|
+
pending_id_must_be_different,
|
|
119
151
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
reject = (1 << 1),
|
|
123
|
-
preimage = (1 << 2) // whether or not a pre-image will be supplied
|
|
124
|
-
}
|
|
152
|
+
pending_transfer_not_found,
|
|
153
|
+
pending_transfer_not_pending,
|
|
125
154
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
debit_amount_was_not_reserved,
|
|
139
|
-
credit_amount_was_not_reserved,
|
|
140
|
-
exceeds_credits,
|
|
141
|
-
exceeds_debits,
|
|
142
|
-
condition_requires_preimage,
|
|
143
|
-
preimage_requires_condition,
|
|
144
|
-
preimage_invalid,
|
|
155
|
+
pending_transfer_has_different_debit_account_id,
|
|
156
|
+
pending_transfer_has_different_credit_account_id,
|
|
157
|
+
pending_transfer_has_different_ledger,
|
|
158
|
+
pending_transfer_has_different_code,
|
|
159
|
+
|
|
160
|
+
exceeds_pending_transfer_amount,
|
|
161
|
+
pending_transfer_has_different_amount,
|
|
162
|
+
|
|
163
|
+
pending_transfer_already_posted,
|
|
164
|
+
pending_transfer_already_voided,
|
|
165
|
+
|
|
166
|
+
pending_transfer_expired,
|
|
145
167
|
}
|
|
146
168
|
|
|
147
|
-
export type
|
|
169
|
+
export type CreateTransfersError = {
|
|
148
170
|
index: number,
|
|
149
|
-
code:
|
|
171
|
+
code: CreateTransferError,
|
|
150
172
|
}
|
|
151
173
|
|
|
152
174
|
export type AccountID = bigint // u128
|
|
153
175
|
export type TransferID = bigint // u128
|
|
154
176
|
|
|
155
|
-
export type Event = Account | Transfer |
|
|
156
|
-
export type Result = CreateAccountsError | CreateTransfersError |
|
|
177
|
+
export type Event = Account | Transfer | AccountID | TransferID
|
|
178
|
+
export type Result = CreateAccountsError | CreateTransfersError | Account | Transfer
|
|
157
179
|
export type ResultCallback = (error: undefined | Error, results: Result[]) => void
|
|
158
180
|
|
|
159
181
|
export enum Operation {
|
|
160
182
|
CREATE_ACCOUNT = 3,
|
|
161
183
|
CREATE_TRANSFER,
|
|
162
|
-
COMMIT_TRANSFER,
|
|
163
184
|
ACCOUNT_LOOKUP,
|
|
164
185
|
TRANSFER_LOOKUP
|
|
165
186
|
}
|
|
@@ -167,7 +188,6 @@ export enum Operation {
|
|
|
167
188
|
export interface Client {
|
|
168
189
|
createAccounts: (batch: Account[]) => Promise<CreateAccountsError[]>
|
|
169
190
|
createTransfers: (batch: Transfer[]) => Promise<CreateTransfersError[]>
|
|
170
|
-
commitTransfers: (batch: Commit[]) => Promise<CommitTransfersError[]>
|
|
171
191
|
lookupAccounts: (batch: AccountID[]) => Promise<Account[]>
|
|
172
192
|
lookupTransfers: (batch: TransferID[]) => Promise<Transfer[]>
|
|
173
193
|
request: (operation: Operation, batch: Event[], callback: ResultCallback) => void
|
|
@@ -192,13 +212,12 @@ const isSameArgs = (args: InitArgs): boolean => {
|
|
|
192
212
|
}
|
|
193
213
|
})
|
|
194
214
|
|
|
195
|
-
return args.cluster_id === _args.cluster_id &&
|
|
196
|
-
isSameReplicas
|
|
215
|
+
return args.cluster_id === _args.cluster_id && isSameReplicas
|
|
197
216
|
}
|
|
198
217
|
|
|
199
218
|
let _client: Client | undefined = undefined
|
|
200
219
|
let _interval: NodeJS.Timeout | undefined = undefined
|
|
201
|
-
//
|
|
220
|
+
// Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.
|
|
202
221
|
let _pinged = false
|
|
203
222
|
// TODO: allow creation of clients if the arguments are different. Will require changes in node.zig as well.
|
|
204
223
|
export function createClient (args: InitArgs): Client {
|
|
@@ -226,7 +245,7 @@ export function createClient (args: InitArgs): Client {
|
|
|
226
245
|
}
|
|
227
246
|
|
|
228
247
|
const createAccounts = async (batch: Account[]): Promise<CreateAccountsError[]> => {
|
|
229
|
-
//
|
|
248
|
+
// Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.
|
|
230
249
|
if (!_pinged) {
|
|
231
250
|
await new Promise<void>(resolve => {
|
|
232
251
|
setTimeout(() => {
|
|
@@ -253,7 +272,7 @@ export function createClient (args: InitArgs): Client {
|
|
|
253
272
|
}
|
|
254
273
|
|
|
255
274
|
const createTransfers = async (batch: Transfer[]): Promise<CreateTransfersError[]> => {
|
|
256
|
-
//
|
|
275
|
+
// Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.
|
|
257
276
|
if (!_pinged) {
|
|
258
277
|
await new Promise<void>(resolve => {
|
|
259
278
|
setTimeout(() => {
|
|
@@ -279,33 +298,6 @@ export function createClient (args: InitArgs): Client {
|
|
|
279
298
|
})
|
|
280
299
|
}
|
|
281
300
|
|
|
282
|
-
const commitTransfers = async (batch: Commit[]): Promise<CommitTransfersError[]> => {
|
|
283
|
-
// here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.
|
|
284
|
-
if (!_pinged) {
|
|
285
|
-
await new Promise<void>(resolve => {
|
|
286
|
-
setTimeout(() => {
|
|
287
|
-
_pinged = true
|
|
288
|
-
resolve()
|
|
289
|
-
}, 600)
|
|
290
|
-
})
|
|
291
|
-
}
|
|
292
|
-
return new Promise((resolve, reject) => {
|
|
293
|
-
const callback = (error: undefined | Error, results: CommitTransfersError[]) => {
|
|
294
|
-
if (error) {
|
|
295
|
-
reject(error)
|
|
296
|
-
return
|
|
297
|
-
}
|
|
298
|
-
resolve(results)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
try {
|
|
302
|
-
binding.request(context, Operation.COMMIT_TRANSFER, batch, callback)
|
|
303
|
-
} catch (error) {
|
|
304
|
-
reject(error)
|
|
305
|
-
}
|
|
306
|
-
})
|
|
307
|
-
}
|
|
308
|
-
|
|
309
301
|
const lookupAccounts = async (batch: AccountID[]): Promise<Account[]> => {
|
|
310
302
|
return new Promise((resolve, reject) => {
|
|
311
303
|
const callback = (error: undefined | Error, results: Account[]) => {
|
|
@@ -353,7 +345,6 @@ export function createClient (args: InitArgs): Client {
|
|
|
353
345
|
_client = {
|
|
354
346
|
createAccounts,
|
|
355
347
|
createTransfers,
|
|
356
|
-
commitTransfers,
|
|
357
348
|
lookupAccounts,
|
|
358
349
|
lookupTransfers,
|
|
359
350
|
request,
|
package/src/node.zig
CHANGED
|
@@ -9,11 +9,8 @@ const Account = tb.Account;
|
|
|
9
9
|
const AccountFlags = tb.AccountFlags;
|
|
10
10
|
const Transfer = tb.Transfer;
|
|
11
11
|
const TransferFlags = tb.TransferFlags;
|
|
12
|
-
const Commit = tb.Commit;
|
|
13
|
-
const CommitFlags = tb.CommitFlags;
|
|
14
12
|
const CreateAccountsResult = tb.CreateAccountsResult;
|
|
15
13
|
const CreateTransfersResult = tb.CreateTransfersResult;
|
|
16
|
-
const CommitTransfersResult = tb.CommitTransfersResult;
|
|
17
14
|
|
|
18
15
|
const StateMachine = @import("tigerbeetle/src/state_machine.zig").StateMachine;
|
|
19
16
|
const Operation = StateMachine.Operation;
|
|
@@ -184,22 +181,17 @@ fn validate_timestamp(env: c.napi_env, object: c.napi_value) !u64 {
|
|
|
184
181
|
|
|
185
182
|
fn decode_from_object(comptime T: type, env: c.napi_env, object: c.napi_value) !T {
|
|
186
183
|
return switch (T) {
|
|
187
|
-
Commit => Commit{
|
|
188
|
-
.id = try translate.u128_from_object(env, object, "id"),
|
|
189
|
-
.reserved = try translate.bytes_from_object(env, object, 32, "reserved"),
|
|
190
|
-
.code = try translate.u32_from_object(env, object, "code"),
|
|
191
|
-
.flags = @bitCast(CommitFlags, try translate.u32_from_object(env, object, "flags")),
|
|
192
|
-
.timestamp = try validate_timestamp(env, object),
|
|
193
|
-
},
|
|
194
184
|
Transfer => Transfer{
|
|
195
185
|
.id = try translate.u128_from_object(env, object, "id"),
|
|
196
186
|
.debit_account_id = try translate.u128_from_object(env, object, "debit_account_id"),
|
|
197
187
|
.credit_account_id = try translate.u128_from_object(env, object, "credit_account_id"),
|
|
198
188
|
.user_data = try translate.u128_from_object(env, object, "user_data"),
|
|
199
|
-
.reserved = try translate.
|
|
189
|
+
.reserved = try translate.u128_from_object(env, object, "reserved"),
|
|
190
|
+
.pending_id = try translate.u128_from_object(env, object, "pending_id"),
|
|
200
191
|
.timeout = try translate.u64_from_object(env, object, "timeout"),
|
|
201
|
-
.
|
|
202
|
-
.
|
|
192
|
+
.ledger = try translate.u32_from_object(env, object, "ledger"),
|
|
193
|
+
.code = try translate.u16_from_object(env, object, "code"),
|
|
194
|
+
.flags = @bitCast(TransferFlags, try translate.u16_from_object(env, object, "flags")),
|
|
203
195
|
.amount = try translate.u64_from_object(env, object, "amount"),
|
|
204
196
|
.timestamp = try validate_timestamp(env, object),
|
|
205
197
|
},
|
|
@@ -207,13 +199,13 @@ fn decode_from_object(comptime T: type, env: c.napi_env, object: c.napi_value) !
|
|
|
207
199
|
.id = try translate.u128_from_object(env, object, "id"),
|
|
208
200
|
.user_data = try translate.u128_from_object(env, object, "user_data"),
|
|
209
201
|
.reserved = try translate.bytes_from_object(env, object, 48, "reserved"),
|
|
210
|
-
.
|
|
202
|
+
.ledger = try translate.u32_from_object(env, object, "ledger"),
|
|
211
203
|
.code = try translate.u16_from_object(env, object, "code"),
|
|
212
|
-
.flags = @bitCast(AccountFlags, try translate.
|
|
213
|
-
.
|
|
214
|
-
.
|
|
215
|
-
.
|
|
216
|
-
.
|
|
204
|
+
.flags = @bitCast(AccountFlags, try translate.u16_from_object(env, object, "flags")),
|
|
205
|
+
.debits_pending = try translate.u64_from_object(env, object, "debits_pending"),
|
|
206
|
+
.debits_posted = try translate.u64_from_object(env, object, "debits_posted"),
|
|
207
|
+
.credits_pending = try translate.u64_from_object(env, object, "credits_pending"),
|
|
208
|
+
.credits_posted = try translate.u64_from_object(env, object, "credits_posted"),
|
|
217
209
|
.timestamp = try validate_timestamp(env, object),
|
|
218
210
|
},
|
|
219
211
|
u128 => try translate.u128_from_value(env, object, "lookup"),
|
|
@@ -230,7 +222,6 @@ pub fn decode_events(
|
|
|
230
222
|
return switch (operation) {
|
|
231
223
|
.create_accounts => try decode_events_from_array(env, array, Account, output),
|
|
232
224
|
.create_transfers => try decode_events_from_array(env, array, Transfer, output),
|
|
233
|
-
.commit_transfers => try decode_events_from_array(env, array, Commit, output),
|
|
234
225
|
.lookup_accounts => try decode_events_from_array(env, array, u128, output),
|
|
235
226
|
.lookup_transfers => try decode_events_from_array(env, array, u128, output),
|
|
236
227
|
else => unreachable,
|
|
@@ -277,7 +268,7 @@ fn encode_napi_results_array(
|
|
|
277
268
|
);
|
|
278
269
|
|
|
279
270
|
switch (Result) {
|
|
280
|
-
CreateAccountsResult, CreateTransfersResult
|
|
271
|
+
CreateAccountsResult, CreateTransfersResult => {
|
|
281
272
|
var i: u32 = 0;
|
|
282
273
|
while (i < results.len) : (i += 1) {
|
|
283
274
|
const result = results[i];
|
|
@@ -347,57 +338,57 @@ fn encode_napi_results_array(
|
|
|
347
338
|
try translate.u32_into_object(
|
|
348
339
|
env,
|
|
349
340
|
napi_object,
|
|
350
|
-
"
|
|
351
|
-
@intCast(u32, result.
|
|
352
|
-
"Failed to set property \"
|
|
341
|
+
"ledger",
|
|
342
|
+
@intCast(u32, result.ledger),
|
|
343
|
+
"Failed to set property \"ledger\" of account lookup result.",
|
|
353
344
|
);
|
|
354
345
|
|
|
355
|
-
try translate.
|
|
346
|
+
try translate.u16_into_object(
|
|
356
347
|
env,
|
|
357
348
|
napi_object,
|
|
358
349
|
"code",
|
|
359
|
-
@intCast(
|
|
350
|
+
@intCast(u16, result.code),
|
|
360
351
|
"Failed to set property \"code\" of account lookup result.",
|
|
361
352
|
);
|
|
362
353
|
|
|
363
|
-
try translate.
|
|
354
|
+
try translate.u16_into_object(
|
|
364
355
|
env,
|
|
365
356
|
napi_object,
|
|
366
357
|
"flags",
|
|
367
|
-
@bitCast(
|
|
358
|
+
@bitCast(u16, result.flags),
|
|
368
359
|
"Failed to set property \"flags\" of account lookup result.",
|
|
369
360
|
);
|
|
370
361
|
|
|
371
362
|
try translate.u64_into_object(
|
|
372
363
|
env,
|
|
373
364
|
napi_object,
|
|
374
|
-
"
|
|
375
|
-
result.
|
|
376
|
-
"Failed to set property \"
|
|
365
|
+
"debits_pending",
|
|
366
|
+
result.debits_pending,
|
|
367
|
+
"Failed to set property \"debits_pending\" of account lookup result.",
|
|
377
368
|
);
|
|
378
369
|
|
|
379
370
|
try translate.u64_into_object(
|
|
380
371
|
env,
|
|
381
372
|
napi_object,
|
|
382
|
-
"
|
|
383
|
-
result.
|
|
384
|
-
"Failed to set property \"
|
|
373
|
+
"debits_posted",
|
|
374
|
+
result.debits_posted,
|
|
375
|
+
"Failed to set property \"debits_posted\" of account lookup result.",
|
|
385
376
|
);
|
|
386
377
|
|
|
387
378
|
try translate.u64_into_object(
|
|
388
379
|
env,
|
|
389
380
|
napi_object,
|
|
390
|
-
"
|
|
391
|
-
result.
|
|
392
|
-
"Failed to set property \"
|
|
381
|
+
"credits_pending",
|
|
382
|
+
result.credits_pending,
|
|
383
|
+
"Failed to set property \"credits_pending\" of account lookup result.",
|
|
393
384
|
);
|
|
394
385
|
|
|
395
386
|
try translate.u64_into_object(
|
|
396
387
|
env,
|
|
397
388
|
napi_object,
|
|
398
|
-
"
|
|
399
|
-
result.
|
|
400
|
-
"Failed to set property \"
|
|
389
|
+
"credits_posted",
|
|
390
|
+
result.credits_posted,
|
|
391
|
+
"Failed to set property \"credits_posted\" of account lookup result.",
|
|
401
392
|
);
|
|
402
393
|
|
|
403
394
|
try translate.u64_into_object(
|
|
@@ -458,14 +449,22 @@ fn encode_napi_results_array(
|
|
|
458
449
|
"Failed to set property \"user_data\" of transfer lookup result.",
|
|
459
450
|
);
|
|
460
451
|
|
|
461
|
-
try translate.
|
|
452
|
+
try translate.u128_into_object(
|
|
462
453
|
env,
|
|
463
454
|
napi_object,
|
|
464
455
|
"reserved",
|
|
465
|
-
|
|
456
|
+
result.reserved,
|
|
466
457
|
"Failed to set property \"reserved\" of transfer lookup result.",
|
|
467
458
|
);
|
|
468
459
|
|
|
460
|
+
try translate.u128_into_object(
|
|
461
|
+
env,
|
|
462
|
+
napi_object,
|
|
463
|
+
"pending_id",
|
|
464
|
+
result.pending_id,
|
|
465
|
+
"Failed to set property \"pending_id\" of transfer lookup result.",
|
|
466
|
+
);
|
|
467
|
+
|
|
469
468
|
try translate.u64_into_object(
|
|
470
469
|
env,
|
|
471
470
|
napi_object,
|
|
@@ -475,18 +474,26 @@ fn encode_napi_results_array(
|
|
|
475
474
|
);
|
|
476
475
|
|
|
477
476
|
try translate.u32_into_object(
|
|
477
|
+
env,
|
|
478
|
+
napi_object,
|
|
479
|
+
"ledger",
|
|
480
|
+
@intCast(u32, result.ledger),
|
|
481
|
+
"Failed to set property \"ledger\" of transfer lookup result.",
|
|
482
|
+
);
|
|
483
|
+
|
|
484
|
+
try translate.u16_into_object(
|
|
478
485
|
env,
|
|
479
486
|
napi_object,
|
|
480
487
|
"code",
|
|
481
|
-
@intCast(
|
|
488
|
+
@intCast(u16, result.code),
|
|
482
489
|
"Failed to set property \"code\" of transfer lookup result.",
|
|
483
490
|
);
|
|
484
491
|
|
|
485
|
-
try translate.
|
|
492
|
+
try translate.u16_into_object(
|
|
486
493
|
env,
|
|
487
494
|
napi_object,
|
|
488
495
|
"flags",
|
|
489
|
-
@bitCast(
|
|
496
|
+
@bitCast(u16, result.flags),
|
|
490
497
|
"Failed to set property \"flags\" of transfer lookup result.",
|
|
491
498
|
);
|
|
492
499
|
|
|
@@ -579,12 +586,7 @@ fn request(env: c.napi_env, info: c.napi_callback_info) callconv(.C) c.napi_valu
|
|
|
579
586
|
translate.throw(env, "Unknown operation.") catch return null;
|
|
580
587
|
}
|
|
581
588
|
|
|
582
|
-
const message = context.client.get_message()
|
|
583
|
-
translate.throw(
|
|
584
|
-
env,
|
|
585
|
-
"Too many requests outstanding.",
|
|
586
|
-
) catch return null;
|
|
587
|
-
};
|
|
589
|
+
const message = context.client.get_message();
|
|
588
590
|
defer context.client.unref(message);
|
|
589
591
|
|
|
590
592
|
const operation = @intToEnum(Operation, @intCast(u8, operation_int));
|
|
@@ -634,12 +636,7 @@ fn raw_request(env: c.napi_env, info: c.napi_callback_info) callconv(.C) c.napi_
|
|
|
634
636
|
}
|
|
635
637
|
const operation = @intToEnum(Operation, @intCast(u8, operation_int));
|
|
636
638
|
|
|
637
|
-
const message = context.client.get_message()
|
|
638
|
-
translate.throw(
|
|
639
|
-
env,
|
|
640
|
-
"Too many requests outstanding.",
|
|
641
|
-
) catch return null;
|
|
642
|
-
};
|
|
639
|
+
const message = context.client.get_message();
|
|
643
640
|
defer context.client.unref(message);
|
|
644
641
|
|
|
645
642
|
const body_length = translate.bytes_from_buffer(
|
|
@@ -707,11 +704,6 @@ fn on_result(user_data: u128, operation: Operation, results: Client.Error![]cons
|
|
|
707
704
|
env,
|
|
708
705
|
value,
|
|
709
706
|
) catch return,
|
|
710
|
-
.commit_transfers => encode_napi_results_array(
|
|
711
|
-
CommitTransfersResult,
|
|
712
|
-
env,
|
|
713
|
-
value,
|
|
714
|
-
) catch return,
|
|
715
707
|
.lookup_accounts => encode_napi_results_array(Account, env, value) catch return,
|
|
716
708
|
.lookup_transfers => encode_napi_results_array(Transfer, env, value) catch return,
|
|
717
709
|
};
|