tigerbeetle 0.17.8 → 0.17.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2997253dc893829fe68df06a1a6a90450e2887e8a8206f759df6ae6adb3c6d84
4
- data.tar.gz: b6382e837c861ec9e8d01ee0ea3241cf4afab975603ed9361c85f80c37768e21
3
+ metadata.gz: 43f442704bc340264a0e59ae73e1d877f3c4a213f42c2d06fc6f30c419831cea
4
+ data.tar.gz: 5c76d2fb2c3f608e43743e3071202040f542f6cb906d1ad9ff1baab5c8bda1ec
5
5
  SHA512:
6
- metadata.gz: 9898305fee80abe764d276d926d83a8a551ad5af5d05b48757c0330b1664b36f56833b708bba83b3ba25853fe571b9675620325ebbc0cbc313e9f19a60308b23
7
- data.tar.gz: 96b88a1a864c3c84d9f1fbc06589c8aa3e0c1000344e51332ece592a713923a84c5b33daec6a9e9deae6c7d80dc78afffdf31f0c5da579e27ee916d75c02805e
6
+ metadata.gz: 5604eb11cfa72d5fa1237f0e11abf0f0b7f9512a8408d227ba273718cafbf0cba7af950a3bf7a042957074f1f18f1ba106ac6304966d114ccb718d2dac38d5a3
7
+ data.tar.gz: 0d825674cf6047888820446b4b3046ddbe20eb01f7c03dc54d41b246e1fa1e6ab9cac4a66126b4cc69e2a128c010f85f1f0ce93d1ebfed527c1cc9053aae0ced
data/README.md CHANGED
@@ -6,7 +6,9 @@ The TigerBeetle client for Ruby.
6
6
  >[!IMPORTANT]
7
7
  >This gem changed ownership from [Anthony D](https://github.com/antstorm)
8
8
  to TigerBeetle. If you're upgrading from a 0.0.x version, please consult
9
- the [migration guide](./docs/migration.md) for the necessary code changes.
9
+ the [migration guide](
10
+ https://github.com/tigerbeetle/tigerbeetle/blob/main/src/clients/ruby/docs/migration.md
11
+ ) for the necessary code changes.
10
12
 
11
13
  ## Prerequisites
12
14
 
data/sig/tigerbeetle.rbs CHANGED
@@ -254,9 +254,109 @@ module TigerBeetle
254
254
  def initialize: () -> void
255
255
  end
256
256
 
257
+ type create_account_status_name =
258
+ :created
259
+ | :linked_event_failed
260
+ | :linked_event_chain_open
261
+ | :imported_event_expected
262
+ | :imported_event_not_expected
263
+ | :timestamp_must_be_zero
264
+ | :imported_event_timestamp_out_of_range
265
+ | :imported_event_timestamp_must_not_advance
266
+ | :reserved_field
267
+ | :reserved_flag
268
+ | :id_must_not_be_zero
269
+ | :id_must_not_be_int_max
270
+ | :exists_with_different_flags
271
+ | :exists_with_different_user_data_128
272
+ | :exists_with_different_user_data_64
273
+ | :exists_with_different_user_data_32
274
+ | :exists_with_different_ledger
275
+ | :exists_with_different_code
276
+ | :exists
277
+ | :flags_are_mutually_exclusive
278
+ | :debits_pending_must_be_zero
279
+ | :debits_posted_must_be_zero
280
+ | :credits_pending_must_be_zero
281
+ | :credits_posted_must_be_zero
282
+ | :ledger_must_not_be_zero
283
+ | :code_must_not_be_zero
284
+ | :imported_event_timestamp_must_not_regress
285
+
286
+ type create_transfer_status_name =
287
+ :created
288
+ | :linked_event_failed
289
+ | :linked_event_chain_open
290
+ | :imported_event_expected
291
+ | :imported_event_not_expected
292
+ | :timestamp_must_be_zero
293
+ | :imported_event_timestamp_out_of_range
294
+ | :imported_event_timestamp_must_not_advance
295
+ | :reserved_flag
296
+ | :id_must_not_be_zero
297
+ | :id_must_not_be_int_max
298
+ | :exists_with_different_flags
299
+ | :exists_with_different_pending_id
300
+ | :exists_with_different_timeout
301
+ | :exists_with_different_debit_account_id
302
+ | :exists_with_different_credit_account_id
303
+ | :exists_with_different_amount
304
+ | :exists_with_different_user_data_128
305
+ | :exists_with_different_user_data_64
306
+ | :exists_with_different_user_data_32
307
+ | :exists_with_different_ledger
308
+ | :exists_with_different_code
309
+ | :exists
310
+ | :id_already_failed
311
+ | :flags_are_mutually_exclusive
312
+ | :debit_account_id_must_not_be_zero
313
+ | :debit_account_id_must_not_be_int_max
314
+ | :credit_account_id_must_not_be_zero
315
+ | :credit_account_id_must_not_be_int_max
316
+ | :accounts_must_be_different
317
+ | :pending_id_must_be_zero
318
+ | :pending_id_must_not_be_zero
319
+ | :pending_id_must_not_be_int_max
320
+ | :pending_id_must_be_different
321
+ | :timeout_reserved_for_pending_transfer
322
+ | :closing_transfer_must_be_pending
323
+ | :ledger_must_not_be_zero
324
+ | :code_must_not_be_zero
325
+ | :debit_account_not_found
326
+ | :credit_account_not_found
327
+ | :accounts_must_have_the_same_ledger
328
+ | :transfer_must_have_the_same_ledger_as_accounts
329
+ | :pending_transfer_not_found
330
+ | :pending_transfer_not_pending
331
+ | :pending_transfer_has_different_debit_account_id
332
+ | :pending_transfer_has_different_credit_account_id
333
+ | :pending_transfer_has_different_ledger
334
+ | :pending_transfer_has_different_code
335
+ | :exceeds_pending_transfer_amount
336
+ | :pending_transfer_has_different_amount
337
+ | :pending_transfer_already_posted
338
+ | :pending_transfer_already_voided
339
+ | :pending_transfer_expired
340
+ | :imported_event_timestamp_must_not_regress
341
+ | :imported_event_timestamp_must_postdate_debit_account
342
+ | :imported_event_timestamp_must_postdate_credit_account
343
+ | :imported_event_timeout_must_be_zero
344
+ | :debit_account_already_closed
345
+ | :credit_account_already_closed
346
+ | :overflows_debits_pending
347
+ | :overflows_credits_pending
348
+ | :overflows_debits_posted
349
+ | :overflows_credits_posted
350
+ | :overflows_debits
351
+ | :overflows_credits
352
+ | :overflows_timeout
353
+ | :exceeds_credits
354
+ | :exceeds_debits
355
+
257
356
  class CreateAccountResult
258
357
  attr_reader timestamp: Integer
259
358
  attr_reader status: Integer
359
+ attr_reader status_name: create_account_status_name
260
360
 
261
361
  def initialize: () -> void
262
362
  end
@@ -264,6 +364,7 @@ module TigerBeetle
264
364
  class CreateTransferResult
265
365
  attr_reader timestamp: Integer
266
366
  attr_reader status: Integer
367
+ attr_reader status_name: create_transfer_status_name
267
368
 
268
369
  def initialize: () -> void
269
370
  end
@@ -14,7 +14,10 @@
14
14
  #include <string.h>
15
15
 
16
16
  static inline void rb_tb_pack_u128(VALUE v, void *dst) {
17
- rb_integer_pack(v, dst, 16, 1, 0, INTEGER_PACK_LITTLE_ENDIAN);
17
+ int status = rb_integer_pack(v, dst, 16, 1, 0, INTEGER_PACK_LITTLE_ENDIAN);
18
+ if (status != 0 && status != 1) {
19
+ rb_raise(rb_eRangeError, "integer must be between 0 and 2**128 - 1");
20
+ }
18
21
  }
19
22
 
20
23
  static inline VALUE rb_tb_unpack_u128(const void *src) {
@@ -58,6 +61,212 @@ static const char *rb_tb_init_error_message(TB_INIT_STATUS status) {
58
61
  }
59
62
  }
60
63
 
64
+ static VALUE rb_tb_create_accounts_status_name(uint32_t status) {
65
+ switch (status) {
66
+ case 4294967295:
67
+ return ID2SYM(rb_intern("created"));
68
+ case 1:
69
+ return ID2SYM(rb_intern("linked_event_failed"));
70
+ case 2:
71
+ return ID2SYM(rb_intern("linked_event_chain_open"));
72
+ case 22:
73
+ return ID2SYM(rb_intern("imported_event_expected"));
74
+ case 23:
75
+ return ID2SYM(rb_intern("imported_event_not_expected"));
76
+ case 3:
77
+ return ID2SYM(rb_intern("timestamp_must_be_zero"));
78
+ case 24:
79
+ return ID2SYM(rb_intern("imported_event_timestamp_out_of_range"));
80
+ case 25:
81
+ return ID2SYM(rb_intern("imported_event_timestamp_must_not_advance"));
82
+ case 4:
83
+ return ID2SYM(rb_intern("reserved_field"));
84
+ case 5:
85
+ return ID2SYM(rb_intern("reserved_flag"));
86
+ case 6:
87
+ return ID2SYM(rb_intern("id_must_not_be_zero"));
88
+ case 7:
89
+ return ID2SYM(rb_intern("id_must_not_be_int_max"));
90
+ case 15:
91
+ return ID2SYM(rb_intern("exists_with_different_flags"));
92
+ case 16:
93
+ return ID2SYM(rb_intern("exists_with_different_user_data_128"));
94
+ case 17:
95
+ return ID2SYM(rb_intern("exists_with_different_user_data_64"));
96
+ case 18:
97
+ return ID2SYM(rb_intern("exists_with_different_user_data_32"));
98
+ case 19:
99
+ return ID2SYM(rb_intern("exists_with_different_ledger"));
100
+ case 20:
101
+ return ID2SYM(rb_intern("exists_with_different_code"));
102
+ case 21:
103
+ return ID2SYM(rb_intern("exists"));
104
+ case 8:
105
+ return ID2SYM(rb_intern("flags_are_mutually_exclusive"));
106
+ case 9:
107
+ return ID2SYM(rb_intern("debits_pending_must_be_zero"));
108
+ case 10:
109
+ return ID2SYM(rb_intern("debits_posted_must_be_zero"));
110
+ case 11:
111
+ return ID2SYM(rb_intern("credits_pending_must_be_zero"));
112
+ case 12:
113
+ return ID2SYM(rb_intern("credits_posted_must_be_zero"));
114
+ case 13:
115
+ return ID2SYM(rb_intern("ledger_must_not_be_zero"));
116
+ case 14:
117
+ return ID2SYM(rb_intern("code_must_not_be_zero"));
118
+ case 26:
119
+ return ID2SYM(rb_intern("imported_event_timestamp_must_not_regress"));
120
+ default:
121
+ tb_assert(false);
122
+ return Qnil;
123
+ }
124
+ }
125
+
126
+ static VALUE rb_tb_create_transfers_status_name(uint32_t status) {
127
+ switch (status) {
128
+ case 4294967295:
129
+ return ID2SYM(rb_intern("created"));
130
+ case 1:
131
+ return ID2SYM(rb_intern("linked_event_failed"));
132
+ case 2:
133
+ return ID2SYM(rb_intern("linked_event_chain_open"));
134
+ case 56:
135
+ return ID2SYM(rb_intern("imported_event_expected"));
136
+ case 57:
137
+ return ID2SYM(rb_intern("imported_event_not_expected"));
138
+ case 3:
139
+ return ID2SYM(rb_intern("timestamp_must_be_zero"));
140
+ case 58:
141
+ return ID2SYM(rb_intern("imported_event_timestamp_out_of_range"));
142
+ case 59:
143
+ return ID2SYM(rb_intern("imported_event_timestamp_must_not_advance"));
144
+ case 4:
145
+ return ID2SYM(rb_intern("reserved_flag"));
146
+ case 5:
147
+ return ID2SYM(rb_intern("id_must_not_be_zero"));
148
+ case 6:
149
+ return ID2SYM(rb_intern("id_must_not_be_int_max"));
150
+ case 36:
151
+ return ID2SYM(rb_intern("exists_with_different_flags"));
152
+ case 40:
153
+ return ID2SYM(rb_intern("exists_with_different_pending_id"));
154
+ case 44:
155
+ return ID2SYM(rb_intern("exists_with_different_timeout"));
156
+ case 37:
157
+ return ID2SYM(rb_intern("exists_with_different_debit_account_id"));
158
+ case 38:
159
+ return ID2SYM(rb_intern("exists_with_different_credit_account_id"));
160
+ case 39:
161
+ return ID2SYM(rb_intern("exists_with_different_amount"));
162
+ case 41:
163
+ return ID2SYM(rb_intern("exists_with_different_user_data_128"));
164
+ case 42:
165
+ return ID2SYM(rb_intern("exists_with_different_user_data_64"));
166
+ case 43:
167
+ return ID2SYM(rb_intern("exists_with_different_user_data_32"));
168
+ case 67:
169
+ return ID2SYM(rb_intern("exists_with_different_ledger"));
170
+ case 45:
171
+ return ID2SYM(rb_intern("exists_with_different_code"));
172
+ case 46:
173
+ return ID2SYM(rb_intern("exists"));
174
+ case 68:
175
+ return ID2SYM(rb_intern("id_already_failed"));
176
+ case 7:
177
+ return ID2SYM(rb_intern("flags_are_mutually_exclusive"));
178
+ case 8:
179
+ return ID2SYM(rb_intern("debit_account_id_must_not_be_zero"));
180
+ case 9:
181
+ return ID2SYM(rb_intern("debit_account_id_must_not_be_int_max"));
182
+ case 10:
183
+ return ID2SYM(rb_intern("credit_account_id_must_not_be_zero"));
184
+ case 11:
185
+ return ID2SYM(rb_intern("credit_account_id_must_not_be_int_max"));
186
+ case 12:
187
+ return ID2SYM(rb_intern("accounts_must_be_different"));
188
+ case 13:
189
+ return ID2SYM(rb_intern("pending_id_must_be_zero"));
190
+ case 14:
191
+ return ID2SYM(rb_intern("pending_id_must_not_be_zero"));
192
+ case 15:
193
+ return ID2SYM(rb_intern("pending_id_must_not_be_int_max"));
194
+ case 16:
195
+ return ID2SYM(rb_intern("pending_id_must_be_different"));
196
+ case 17:
197
+ return ID2SYM(rb_intern("timeout_reserved_for_pending_transfer"));
198
+ case 64:
199
+ return ID2SYM(rb_intern("closing_transfer_must_be_pending"));
200
+ case 19:
201
+ return ID2SYM(rb_intern("ledger_must_not_be_zero"));
202
+ case 20:
203
+ return ID2SYM(rb_intern("code_must_not_be_zero"));
204
+ case 21:
205
+ return ID2SYM(rb_intern("debit_account_not_found"));
206
+ case 22:
207
+ return ID2SYM(rb_intern("credit_account_not_found"));
208
+ case 23:
209
+ return ID2SYM(rb_intern("accounts_must_have_the_same_ledger"));
210
+ case 24:
211
+ return ID2SYM(rb_intern("transfer_must_have_the_same_ledger_as_accounts"));
212
+ case 25:
213
+ return ID2SYM(rb_intern("pending_transfer_not_found"));
214
+ case 26:
215
+ return ID2SYM(rb_intern("pending_transfer_not_pending"));
216
+ case 27:
217
+ return ID2SYM(rb_intern("pending_transfer_has_different_debit_account_id"));
218
+ case 28:
219
+ return ID2SYM(rb_intern("pending_transfer_has_different_credit_account_id"));
220
+ case 29:
221
+ return ID2SYM(rb_intern("pending_transfer_has_different_ledger"));
222
+ case 30:
223
+ return ID2SYM(rb_intern("pending_transfer_has_different_code"));
224
+ case 31:
225
+ return ID2SYM(rb_intern("exceeds_pending_transfer_amount"));
226
+ case 32:
227
+ return ID2SYM(rb_intern("pending_transfer_has_different_amount"));
228
+ case 33:
229
+ return ID2SYM(rb_intern("pending_transfer_already_posted"));
230
+ case 34:
231
+ return ID2SYM(rb_intern("pending_transfer_already_voided"));
232
+ case 35:
233
+ return ID2SYM(rb_intern("pending_transfer_expired"));
234
+ case 60:
235
+ return ID2SYM(rb_intern("imported_event_timestamp_must_not_regress"));
236
+ case 61:
237
+ return ID2SYM(rb_intern("imported_event_timestamp_must_postdate_debit_account"));
238
+ case 62:
239
+ return ID2SYM(rb_intern("imported_event_timestamp_must_postdate_credit_account"));
240
+ case 63:
241
+ return ID2SYM(rb_intern("imported_event_timeout_must_be_zero"));
242
+ case 65:
243
+ return ID2SYM(rb_intern("debit_account_already_closed"));
244
+ case 66:
245
+ return ID2SYM(rb_intern("credit_account_already_closed"));
246
+ case 47:
247
+ return ID2SYM(rb_intern("overflows_debits_pending"));
248
+ case 48:
249
+ return ID2SYM(rb_intern("overflows_credits_pending"));
250
+ case 49:
251
+ return ID2SYM(rb_intern("overflows_debits_posted"));
252
+ case 50:
253
+ return ID2SYM(rb_intern("overflows_credits_posted"));
254
+ case 51:
255
+ return ID2SYM(rb_intern("overflows_debits"));
256
+ case 52:
257
+ return ID2SYM(rb_intern("overflows_credits"));
258
+ case 53:
259
+ return ID2SYM(rb_intern("overflows_timeout"));
260
+ case 54:
261
+ return ID2SYM(rb_intern("exceeds_credits"));
262
+ case 55:
263
+ return ID2SYM(rb_intern("exceeds_debits"));
264
+ default:
265
+ tb_assert(false);
266
+ return Qnil;
267
+ }
268
+ }
269
+
61
270
  static VALUE rb_tb_deserialize_lookup_accounts(const uint8_t *buf, uint32_t buf_size) {
62
271
  VALUE klass = rb_path2class("TigerBeetle::Account");
63
272
  tb_assert(buf_size % sizeof(tb_account_t) == 0);
@@ -73,13 +282,13 @@ static VALUE rb_tb_deserialize_lookup_accounts(const uint8_t *buf, uint32_t buf_
73
282
  rb_ivar_set(obj, rb_intern("@credits_pending"), rb_tb_unpack_u128(&item->credits_pending));
74
283
  rb_ivar_set(obj, rb_intern("@credits_posted"), rb_tb_unpack_u128(&item->credits_posted));
75
284
  rb_ivar_set(obj, rb_intern("@user_data_128"), rb_tb_unpack_u128(&item->user_data_128));
76
- rb_ivar_set(obj, rb_intern("@user_data_64"), ULL2NUM(item->user_data_64));
77
- rb_ivar_set(obj, rb_intern("@user_data_32"), UINT2NUM(item->user_data_32));
285
+ rb_ivar_set(obj, rb_intern("@user_data_64"), RB_ULL2NUM(item->user_data_64));
286
+ rb_ivar_set(obj, rb_intern("@user_data_32"), RB_UINT2NUM(item->user_data_32));
78
287
  tb_assert(item->reserved == 0);
79
- rb_ivar_set(obj, rb_intern("@ledger"), UINT2NUM(item->ledger));
80
- rb_ivar_set(obj, rb_intern("@code"), UINT2NUM(item->code));
81
- rb_ivar_set(obj, rb_intern("@flags"), UINT2NUM(item->flags));
82
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
288
+ rb_ivar_set(obj, rb_intern("@ledger"), RB_UINT2NUM(item->ledger));
289
+ rb_ivar_set(obj, rb_intern("@code"), RB_UINT2NUM(item->code));
290
+ rb_ivar_set(obj, rb_intern("@flags"), RB_UINT2NUM(item->flags));
291
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
83
292
  rb_ary_push(results, obj);
84
293
  }
85
294
  return results;
@@ -100,13 +309,13 @@ static VALUE rb_tb_deserialize_lookup_transfers(const uint8_t *buf, uint32_t buf
100
309
  rb_ivar_set(obj, rb_intern("@amount"), rb_tb_unpack_u128(&item->amount));
101
310
  rb_ivar_set(obj, rb_intern("@pending_id"), rb_tb_unpack_u128(&item->pending_id));
102
311
  rb_ivar_set(obj, rb_intern("@user_data_128"), rb_tb_unpack_u128(&item->user_data_128));
103
- rb_ivar_set(obj, rb_intern("@user_data_64"), ULL2NUM(item->user_data_64));
104
- rb_ivar_set(obj, rb_intern("@user_data_32"), UINT2NUM(item->user_data_32));
105
- rb_ivar_set(obj, rb_intern("@timeout"), UINT2NUM(item->timeout));
106
- rb_ivar_set(obj, rb_intern("@ledger"), UINT2NUM(item->ledger));
107
- rb_ivar_set(obj, rb_intern("@code"), UINT2NUM(item->code));
108
- rb_ivar_set(obj, rb_intern("@flags"), UINT2NUM(item->flags));
109
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
312
+ rb_ivar_set(obj, rb_intern("@user_data_64"), RB_ULL2NUM(item->user_data_64));
313
+ rb_ivar_set(obj, rb_intern("@user_data_32"), RB_UINT2NUM(item->user_data_32));
314
+ rb_ivar_set(obj, rb_intern("@timeout"), RB_UINT2NUM(item->timeout));
315
+ rb_ivar_set(obj, rb_intern("@ledger"), RB_UINT2NUM(item->ledger));
316
+ rb_ivar_set(obj, rb_intern("@code"), RB_UINT2NUM(item->code));
317
+ rb_ivar_set(obj, rb_intern("@flags"), RB_UINT2NUM(item->flags));
318
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
110
319
  rb_ary_push(results, obj);
111
320
  }
112
321
  return results;
@@ -119,14 +328,14 @@ static void rb_tb_serialize_get_account_transfers(VALUE items_rb, uint8_t *buf,
119
328
  tb_account_filter_t *item = &items[i];
120
329
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@account_id")), &item->account_id);
121
330
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
122
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
123
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
124
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
331
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
332
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
333
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
125
334
  memset(item->reserved, 0, sizeof(item->reserved));
126
- item->timestamp_min = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
127
- item->timestamp_max = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
128
- item->limit = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
129
- item->flags = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
335
+ item->timestamp_min = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
336
+ item->timestamp_max = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
337
+ item->limit = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
338
+ item->flags = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
130
339
  }
131
340
  }
132
341
 
@@ -145,13 +354,13 @@ static VALUE rb_tb_deserialize_get_account_transfers(const uint8_t *buf, uint32_
145
354
  rb_ivar_set(obj, rb_intern("@amount"), rb_tb_unpack_u128(&item->amount));
146
355
  rb_ivar_set(obj, rb_intern("@pending_id"), rb_tb_unpack_u128(&item->pending_id));
147
356
  rb_ivar_set(obj, rb_intern("@user_data_128"), rb_tb_unpack_u128(&item->user_data_128));
148
- rb_ivar_set(obj, rb_intern("@user_data_64"), ULL2NUM(item->user_data_64));
149
- rb_ivar_set(obj, rb_intern("@user_data_32"), UINT2NUM(item->user_data_32));
150
- rb_ivar_set(obj, rb_intern("@timeout"), UINT2NUM(item->timeout));
151
- rb_ivar_set(obj, rb_intern("@ledger"), UINT2NUM(item->ledger));
152
- rb_ivar_set(obj, rb_intern("@code"), UINT2NUM(item->code));
153
- rb_ivar_set(obj, rb_intern("@flags"), UINT2NUM(item->flags));
154
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
357
+ rb_ivar_set(obj, rb_intern("@user_data_64"), RB_ULL2NUM(item->user_data_64));
358
+ rb_ivar_set(obj, rb_intern("@user_data_32"), RB_UINT2NUM(item->user_data_32));
359
+ rb_ivar_set(obj, rb_intern("@timeout"), RB_UINT2NUM(item->timeout));
360
+ rb_ivar_set(obj, rb_intern("@ledger"), RB_UINT2NUM(item->ledger));
361
+ rb_ivar_set(obj, rb_intern("@code"), RB_UINT2NUM(item->code));
362
+ rb_ivar_set(obj, rb_intern("@flags"), RB_UINT2NUM(item->flags));
363
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
155
364
  rb_ary_push(results, obj);
156
365
  }
157
366
  return results;
@@ -164,14 +373,14 @@ static void rb_tb_serialize_get_account_balances(VALUE items_rb, uint8_t *buf, l
164
373
  tb_account_filter_t *item = &items[i];
165
374
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@account_id")), &item->account_id);
166
375
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
167
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
168
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
169
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
376
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
377
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
378
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
170
379
  memset(item->reserved, 0, sizeof(item->reserved));
171
- item->timestamp_min = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
172
- item->timestamp_max = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
173
- item->limit = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
174
- item->flags = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
380
+ item->timestamp_min = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
381
+ item->timestamp_max = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
382
+ item->limit = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
383
+ item->flags = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
175
384
  }
176
385
  }
177
386
 
@@ -188,7 +397,7 @@ static VALUE rb_tb_deserialize_get_account_balances(const uint8_t *buf, uint32_t
188
397
  rb_ivar_set(obj, rb_intern("@debits_posted"), rb_tb_unpack_u128(&item->debits_posted));
189
398
  rb_ivar_set(obj, rb_intern("@credits_pending"), rb_tb_unpack_u128(&item->credits_pending));
190
399
  rb_ivar_set(obj, rb_intern("@credits_posted"), rb_tb_unpack_u128(&item->credits_posted));
191
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
400
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
192
401
  uint8_t zero[sizeof(item->reserved)] = {0};
193
402
  tb_assert(memcmp(item->reserved, zero, sizeof(item->reserved)) == 0);
194
403
  rb_ary_push(results, obj);
@@ -202,15 +411,15 @@ static void rb_tb_serialize_query_accounts(VALUE items_rb, uint8_t *buf, long co
202
411
  VALUE item_rb = RARRAY_AREF(items_rb, i);
203
412
  tb_query_filter_t *item = &items[i];
204
413
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
205
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
206
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
207
- item->ledger = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
208
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
414
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
415
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
416
+ item->ledger = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
417
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
209
418
  memset(item->reserved, 0, sizeof(item->reserved));
210
- item->timestamp_min = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
211
- item->timestamp_max = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
212
- item->limit = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
213
- item->flags = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
419
+ item->timestamp_min = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
420
+ item->timestamp_max = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
421
+ item->limit = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
422
+ item->flags = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
214
423
  }
215
424
  }
216
425
 
@@ -229,13 +438,13 @@ static VALUE rb_tb_deserialize_query_accounts(const uint8_t *buf, uint32_t buf_s
229
438
  rb_ivar_set(obj, rb_intern("@credits_pending"), rb_tb_unpack_u128(&item->credits_pending));
230
439
  rb_ivar_set(obj, rb_intern("@credits_posted"), rb_tb_unpack_u128(&item->credits_posted));
231
440
  rb_ivar_set(obj, rb_intern("@user_data_128"), rb_tb_unpack_u128(&item->user_data_128));
232
- rb_ivar_set(obj, rb_intern("@user_data_64"), ULL2NUM(item->user_data_64));
233
- rb_ivar_set(obj, rb_intern("@user_data_32"), UINT2NUM(item->user_data_32));
441
+ rb_ivar_set(obj, rb_intern("@user_data_64"), RB_ULL2NUM(item->user_data_64));
442
+ rb_ivar_set(obj, rb_intern("@user_data_32"), RB_UINT2NUM(item->user_data_32));
234
443
  tb_assert(item->reserved == 0);
235
- rb_ivar_set(obj, rb_intern("@ledger"), UINT2NUM(item->ledger));
236
- rb_ivar_set(obj, rb_intern("@code"), UINT2NUM(item->code));
237
- rb_ivar_set(obj, rb_intern("@flags"), UINT2NUM(item->flags));
238
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
444
+ rb_ivar_set(obj, rb_intern("@ledger"), RB_UINT2NUM(item->ledger));
445
+ rb_ivar_set(obj, rb_intern("@code"), RB_UINT2NUM(item->code));
446
+ rb_ivar_set(obj, rb_intern("@flags"), RB_UINT2NUM(item->flags));
447
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
239
448
  rb_ary_push(results, obj);
240
449
  }
241
450
  return results;
@@ -247,15 +456,15 @@ static void rb_tb_serialize_query_transfers(VALUE items_rb, uint8_t *buf, long c
247
456
  VALUE item_rb = RARRAY_AREF(items_rb, i);
248
457
  tb_query_filter_t *item = &items[i];
249
458
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
250
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
251
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
252
- item->ledger = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
253
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
459
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
460
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
461
+ item->ledger = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
462
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
254
463
  memset(item->reserved, 0, sizeof(item->reserved));
255
- item->timestamp_min = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
256
- item->timestamp_max = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
257
- item->limit = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
258
- item->flags = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
464
+ item->timestamp_min = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_min")));
465
+ item->timestamp_max = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp_max")));
466
+ item->limit = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@limit")));
467
+ item->flags = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
259
468
  }
260
469
  }
261
470
 
@@ -274,13 +483,13 @@ static VALUE rb_tb_deserialize_query_transfers(const uint8_t *buf, uint32_t buf_
274
483
  rb_ivar_set(obj, rb_intern("@amount"), rb_tb_unpack_u128(&item->amount));
275
484
  rb_ivar_set(obj, rb_intern("@pending_id"), rb_tb_unpack_u128(&item->pending_id));
276
485
  rb_ivar_set(obj, rb_intern("@user_data_128"), rb_tb_unpack_u128(&item->user_data_128));
277
- rb_ivar_set(obj, rb_intern("@user_data_64"), ULL2NUM(item->user_data_64));
278
- rb_ivar_set(obj, rb_intern("@user_data_32"), UINT2NUM(item->user_data_32));
279
- rb_ivar_set(obj, rb_intern("@timeout"), UINT2NUM(item->timeout));
280
- rb_ivar_set(obj, rb_intern("@ledger"), UINT2NUM(item->ledger));
281
- rb_ivar_set(obj, rb_intern("@code"), UINT2NUM(item->code));
282
- rb_ivar_set(obj, rb_intern("@flags"), UINT2NUM(item->flags));
283
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
486
+ rb_ivar_set(obj, rb_intern("@user_data_64"), RB_ULL2NUM(item->user_data_64));
487
+ rb_ivar_set(obj, rb_intern("@user_data_32"), RB_UINT2NUM(item->user_data_32));
488
+ rb_ivar_set(obj, rb_intern("@timeout"), RB_UINT2NUM(item->timeout));
489
+ rb_ivar_set(obj, rb_intern("@ledger"), RB_UINT2NUM(item->ledger));
490
+ rb_ivar_set(obj, rb_intern("@code"), RB_UINT2NUM(item->code));
491
+ rb_ivar_set(obj, rb_intern("@flags"), RB_UINT2NUM(item->flags));
492
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
284
493
  rb_ary_push(results, obj);
285
494
  }
286
495
  return results;
@@ -297,13 +506,13 @@ static void rb_tb_serialize_create_accounts(VALUE items_rb, uint8_t *buf, long c
297
506
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@credits_pending")), &item->credits_pending);
298
507
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@credits_posted")), &item->credits_posted);
299
508
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
300
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
301
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
509
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
510
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
302
511
  item->reserved = 0;
303
- item->ledger = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
304
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
305
- item->flags = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
306
- item->timestamp = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp")));
512
+ item->ledger = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
513
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
514
+ item->flags = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@flags")));
515
+ item->timestamp = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp")));
307
516
  }
308
517
  }
309
518
 
@@ -316,8 +525,13 @@ static VALUE rb_tb_deserialize_create_accounts(const uint8_t *buf, uint32_t buf_
316
525
  for (long i = 0; i < count; i++) {
317
526
  const tb_create_account_result_t *item = &items[i];
318
527
  VALUE obj = rb_obj_alloc(klass);
319
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
320
- rb_ivar_set(obj, rb_intern("@status"), UINT2NUM(item->status));
528
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
529
+ rb_ivar_set(obj, rb_intern("@status"), RB_UINT2NUM(item->status));
530
+ rb_ivar_set(
531
+ obj,
532
+ rb_intern("@status_name"),
533
+ rb_tb_create_accounts_status_name(item->status)
534
+ );
321
535
  tb_assert(item->reserved == 0);
322
536
  rb_ary_push(results, obj);
323
537
  }
@@ -335,13 +549,13 @@ static void rb_tb_serialize_create_transfers(VALUE items_rb, uint8_t *buf, long
335
549
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@amount")), &item->amount);
336
550
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@pending_id")), &item->pending_id);
337
551
  rb_tb_pack_u128(rb_ivar_get(item_rb, rb_intern("@user_data_128")), &item->user_data_128);
338
- item->user_data_64 = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
339
- item->user_data_32 = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
340
- item->timeout = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@timeout")));
341
- item->ledger = (uint32_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
342
- item->code = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@code")));
343
- item->flags = (uint16_t)NUM2UINT(rb_ivar_get(item_rb, rb_intern("@flags")));
344
- item->timestamp = NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp")));
552
+ item->user_data_64 = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@user_data_64")));
553
+ item->user_data_32 = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@user_data_32")));
554
+ item->timeout = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@timeout")));
555
+ item->ledger = RB_NUM2UINT(rb_ivar_get(item_rb, rb_intern("@ledger")));
556
+ item->code = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@code")));
557
+ item->flags = RB_NUM2USHORT(rb_ivar_get(item_rb, rb_intern("@flags")));
558
+ item->timestamp = RB_NUM2ULL(rb_ivar_get(item_rb, rb_intern("@timestamp")));
345
559
  }
346
560
  }
347
561
 
@@ -354,8 +568,13 @@ static VALUE rb_tb_deserialize_create_transfers(const uint8_t *buf, uint32_t buf
354
568
  for (long i = 0; i < count; i++) {
355
569
  const tb_create_transfer_result_t *item = &items[i];
356
570
  VALUE obj = rb_obj_alloc(klass);
357
- rb_ivar_set(obj, rb_intern("@timestamp"), ULL2NUM(item->timestamp));
358
- rb_ivar_set(obj, rb_intern("@status"), UINT2NUM(item->status));
571
+ rb_ivar_set(obj, rb_intern("@timestamp"), RB_ULL2NUM(item->timestamp));
572
+ rb_ivar_set(obj, rb_intern("@status"), RB_UINT2NUM(item->status));
573
+ rb_ivar_set(
574
+ obj,
575
+ rb_intern("@status_name"),
576
+ rb_tb_create_transfers_status_name(item->status)
577
+ );
359
578
  tb_assert(item->reserved == 0);
360
579
  rb_ary_push(results, obj);
361
580
  }
@@ -101,7 +101,7 @@ static VALUE rb_tb_request_result(VALUE self) {
101
101
  }
102
102
  }
103
103
 
104
- return rb_ary_new_from_args(2, UINT2NUM(req->status), result);
104
+ return rb_ary_new_from_args(2, RB_UINT2NUM(req->status), result);
105
105
  }
106
106
 
107
107
  static void rb_tb_write_completion(int fd, rb_tb_request_t *req) {
@@ -182,12 +182,12 @@ static VALUE rb_tb_client_initialize(
182
182
  TypedData_Get_Struct(self, tb_client_t, &rb_tb_client_type, client);
183
183
 
184
184
  uint8_t cluster_id_bytes[16] = {0};
185
- rb_integer_pack(cluster_id_rb, cluster_id_bytes, 16, 1, 0, INTEGER_PACK_LITTLE_ENDIAN);
185
+ rb_tb_pack_u128(cluster_id_rb, cluster_id_bytes);
186
186
 
187
187
  const char *addr = StringValueCStr(addresses_rb);
188
188
  uint32_t addr_len = (uint32_t)RSTRING_LEN(addresses_rb);
189
189
 
190
- int completion_fd = NUM2INT(completion_fd_rb);
190
+ int completion_fd = RB_NUM2INT(completion_fd_rb);
191
191
 
192
192
  TB_INIT_STATUS status = tb_client_init(
193
193
  client, cluster_id_bytes, addr, addr_len, (uintptr_t)completion_fd, rb_tb_on_completion
@@ -232,7 +232,7 @@ static VALUE rb_tb_client_submit(VALUE self, VALUE operation_rb, VALUE items_rb)
232
232
  tb_client_t *client;
233
233
  TypedData_Get_Struct(self, tb_client_t, &rb_tb_client_type, client);
234
234
 
235
- TB_OPERATION operation = (TB_OPERATION)NUM2INT(operation_rb);
235
+ TB_OPERATION operation = (TB_OPERATION)RB_NUM2INT(operation_rb);
236
236
  long count = RARRAY_LEN(items_rb);
237
237
 
238
238
  rb_tb_request_t *req = malloc(sizeof(rb_tb_request_t));
@@ -290,12 +290,12 @@ static VALUE rb_tb_client_submit(VALUE self, VALUE operation_rb, VALUE items_rb)
290
290
  static VALUE rb_tb_request_id(VALUE self) {
291
291
  rb_tb_request_t *req;
292
292
  TypedData_Get_Struct(self, rb_tb_request_t, &rb_tb_request_type, req);
293
- return ULL2NUM((unsigned long long)(uintptr_t)req);
293
+ return RB_ULL2NUM((unsigned long long)(uintptr_t)req);
294
294
  }
295
295
 
296
296
  static void rb_tb_init_native_client(VALUE mTigerBeetle) {
297
- rb_define_const(mTigerBeetle, "PACKET_OK", INT2NUM(TB_PACKET_OK));
298
- rb_define_const(mTigerBeetle, "PACKET_CLIENT_SHUTDOWN", INT2NUM(TB_PACKET_CLIENT_SHUTDOWN));
297
+ rb_define_const(mTigerBeetle, "PACKET_OK", RB_INT2NUM(TB_PACKET_OK));
298
+ rb_define_const(mTigerBeetle, "PACKET_CLIENT_SHUTDOWN", RB_INT2NUM(TB_PACKET_CLIENT_SHUTDOWN));
299
299
 
300
300
  VALUE cNativeClient = rb_define_class_under(mTigerBeetle, "NativeClient", rb_cObject);
301
301
  rb_define_alloc_func(cNativeClient, rb_tb_client_alloc);
@@ -327,21 +327,29 @@ module TigerBeetle
327
327
  class CreateAccountResult
328
328
  attr_reader :timestamp
329
329
  attr_reader :status
330
+ attr_reader :status_name
330
331
 
331
332
  def initialize
332
333
  @timestamp = 0
333
334
  @status = 0
334
335
  end
336
+
337
+ def to_s =
338
+ "#<#{self.class} timestamp=#{@timestamp} status_name=#{@status_name}>"
335
339
  end
336
340
 
337
341
  class CreateTransferResult
338
342
  attr_reader :timestamp
339
343
  attr_reader :status
344
+ attr_reader :status_name
340
345
 
341
346
  def initialize
342
347
  @timestamp = 0
343
348
  @status = 0
344
349
  end
350
+
351
+ def to_s =
352
+ "#<#{self.class} timestamp=#{@timestamp} status_name=#{@status_name}>"
345
353
  end
346
354
 
347
355
  end
@@ -1,3 +1,3 @@
1
1
  module TigerBeetle
2
- VERSION = "0.17.8"
2
+ VERSION = "0.17.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tigerbeetle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.8
4
+ version: 0.17.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - TigerBeetle, Inc