tigerbeetle 0.0.1 → 0.0.2
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 +7 -0
- data/README.md +2 -0
- data/lib/tigerbeetle/account.rb +3 -3
- data/lib/tigerbeetle/account_filter.rb +2 -2
- data/lib/tigerbeetle/atomic_counter.rb +14 -0
- data/lib/tigerbeetle/client.rb +10 -8
- data/lib/tigerbeetle/error.rb +4 -0
- data/lib/tigerbeetle/query_filter.rb +1 -1
- data/lib/tigerbeetle/transfer.rb +1 -1
- data/lib/tigerbeetle/version.rb +1 -1
- data/tigerbeetle.gemspec +4 -4
- metadata +20 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a43ba782e05b5f19597449072629a92c1d3116d17b7290fa3ac944287cb4aa43
|
4
|
+
data.tar.gz: 4be7ab09feaca3f520fcb0d1ba2f98e1836cc81011fb54a5c240086b1dda4a0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86cbf91c466a9c3b6811239bf6d56835dfa50e381524a3e2f36f5d01409a2d2679ec6a88f938d9df545b7eba88e1c4e51b64333b547aad27089b3bbbe0aa1749
|
7
|
+
data.tar.gz: f2ed940ae715bf9c5c8dad92e2886069bcd67c2d3ecfb6b77567284adbaf5875f814c8d999509f2671cc300973178689a0758dcdf69afa8f5c206cf092f09d5e
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Ruby Client for TigerBeetle
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/tigerbeetle)
|
3
4
|
[](https://github.com/antstorm/tigerbeetle-ruby/actions/workflows/ci.yml)
|
5
|
+
[](https://opensource.org/licenses/apache-2-0)
|
4
6
|
|
5
7
|
Are you looking to integrate [Tigebeetle](https://tigerbeetle.com/) into your Ruby (or Rails) stack?
|
6
8
|
You've come to the right place!
|
data/lib/tigerbeetle/account.rb
CHANGED
@@ -6,7 +6,7 @@ module TigerBeetle
|
|
6
6
|
|
7
7
|
Account = Struct.new(*ACCOUNT_PARAMS) do
|
8
8
|
def initialize(
|
9
|
-
id
|
9
|
+
id:,
|
10
10
|
debits_pending: 0,
|
11
11
|
debits_posted: 0,
|
12
12
|
credits_pending: 0,
|
@@ -14,8 +14,8 @@ module TigerBeetle
|
|
14
14
|
user_data_128: 0,
|
15
15
|
user_data_64: 0,
|
16
16
|
user_data_32: 0,
|
17
|
-
ledger
|
18
|
-
code
|
17
|
+
ledger:,
|
18
|
+
code:,
|
19
19
|
flags: [],
|
20
20
|
timestamp: nil
|
21
21
|
)
|
@@ -5,14 +5,14 @@ module TigerBeetle
|
|
5
5
|
|
6
6
|
AccountFilter = Struct.new(*ACCOUNT_FILTER_PARAMS) do
|
7
7
|
def initialize(
|
8
|
-
account_id
|
8
|
+
account_id:,
|
9
9
|
user_data_128: 0,
|
10
10
|
user_data_64: 0,
|
11
11
|
user_data_32: 0,
|
12
12
|
code: 0,
|
13
13
|
timestamp_min: 0,
|
14
14
|
timestamp_max: 0,
|
15
|
-
limit
|
15
|
+
limit:,
|
16
16
|
flags: []
|
17
17
|
)
|
18
18
|
super(
|
data/lib/tigerbeetle/client.rb
CHANGED
@@ -4,17 +4,17 @@ require 'tigerbeetle/converters'
|
|
4
4
|
require 'tigerbeetle/account'
|
5
5
|
require 'tigerbeetle/account_balance'
|
6
6
|
require 'tigerbeetle/account_filter'
|
7
|
+
require 'tigerbeetle/atomic_counter'
|
8
|
+
require 'tigerbeetle/error'
|
7
9
|
require 'tigerbeetle/query_filter'
|
8
10
|
require 'tigerbeetle/request'
|
9
11
|
require 'tigerbeetle/transfer'
|
10
12
|
|
11
13
|
module TigerBeetle
|
12
14
|
class Client
|
13
|
-
# TODO: Make this counter atomic
|
14
|
-
@counter = 0
|
15
|
-
|
16
15
|
def self.next_id
|
17
|
-
@counter
|
16
|
+
@counter ||= AtomicCounter.new
|
17
|
+
@counter.increment
|
18
18
|
end
|
19
19
|
|
20
20
|
def initialize(cluster_id = 0, address = '3000')
|
@@ -35,7 +35,7 @@ module TigerBeetle
|
|
35
35
|
@client_id,
|
36
36
|
&@callback
|
37
37
|
)
|
38
|
-
raise "
|
38
|
+
raise ClientError, "Unable to initialize native client: #{status}" unless status == :SUCCESS
|
39
39
|
|
40
40
|
# Make sure to deinitialize all clients when the process terminates
|
41
41
|
at_exit { deinit }
|
@@ -46,7 +46,7 @@ module TigerBeetle
|
|
46
46
|
@log_callback = @logger ? Proc.new { |*args| log_callback(*args) } : nil
|
47
47
|
|
48
48
|
status = TBClient.tb_client_register_log_callback(@log_callback, true)
|
49
|
-
raise "
|
49
|
+
raise ClientError, "Unable to register logger: #{status}" unless status == :SUCCESS
|
50
50
|
end
|
51
51
|
|
52
52
|
def create_accounts(*accounts, &block)
|
@@ -131,6 +131,7 @@ module TigerBeetle
|
|
131
131
|
|
132
132
|
def deinit
|
133
133
|
return unless client
|
134
|
+
return unless inflight_requests.empty?
|
134
135
|
|
135
136
|
TBClient.tb_client_deinit(client)
|
136
137
|
@client = nil
|
@@ -155,10 +156,11 @@ module TigerBeetle
|
|
155
156
|
request = inflight_requests[request_id]
|
156
157
|
result = deserialize(result_ptr, request.converter, result_len)
|
157
158
|
request.block.call(result)
|
159
|
+
inflight_requests.delete(request_id)
|
158
160
|
end
|
159
161
|
|
160
162
|
def submit_request(operation, request, request_converter, response_converter, &block)
|
161
|
-
raise 'Client is not connected' unless client
|
163
|
+
raise ClientError, 'Client is not connected' unless client
|
162
164
|
|
163
165
|
request_id = self.class.next_id
|
164
166
|
user_data_ptr = FFI::MemoryPointer.new(:uint64, 1)
|
@@ -183,7 +185,7 @@ module TigerBeetle
|
|
183
185
|
end
|
184
186
|
|
185
187
|
status = TBClient.tb_client_submit(client, packet)
|
186
|
-
raise "Unable to submit request: #{status}" unless status == :OK
|
188
|
+
raise ClientError, "Unable to submit request: #{status}" unless status == :OK
|
187
189
|
|
188
190
|
# block until the client return a response
|
189
191
|
queue.pop unless block
|
data/lib/tigerbeetle/transfer.rb
CHANGED
data/lib/tigerbeetle/version.rb
CHANGED
data/tigerbeetle.gemspec
CHANGED
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
|
|
25
25
|
'tigerbeetle.gemspec'
|
26
26
|
].flatten
|
27
27
|
|
28
|
-
spec.add_dependency 'ffi'
|
28
|
+
spec.add_dependency 'ffi', '~> 1.14'
|
29
29
|
|
30
|
-
spec.add_development_dependency 'rake'
|
31
|
-
spec.add_development_dependency 'rspec'
|
32
|
-
spec.add_development_dependency 'pry'
|
30
|
+
spec.add_development_dependency 'rake', '~> 13.1'
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.11'
|
32
|
+
spec.add_development_dependency 'pry', '~> 0.15'
|
33
33
|
end
|
metadata
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tigerbeetle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony D
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-05-
|
11
|
+
date: 2025-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.14'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.14'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.11'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.11'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '0.15'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '0.15'
|
69
69
|
description: A Ruby client for interacting with the high performance TigerBeetle ledger
|
70
70
|
email:
|
71
71
|
- anthony.dmitriyev@gmail.com
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- lib/tigerbeetle/account.rb
|
86
86
|
- lib/tigerbeetle/account_balance.rb
|
87
87
|
- lib/tigerbeetle/account_filter.rb
|
88
|
+
- lib/tigerbeetle/atomic_counter.rb
|
88
89
|
- lib/tigerbeetle/client.rb
|
89
90
|
- lib/tigerbeetle/converters.rb
|
90
91
|
- lib/tigerbeetle/converters/account.rb
|
@@ -97,6 +98,7 @@ files:
|
|
97
98
|
- lib/tigerbeetle/converters/time.rb
|
98
99
|
- lib/tigerbeetle/converters/transfer.rb
|
99
100
|
- lib/tigerbeetle/converters/uint_128.rb
|
101
|
+
- lib/tigerbeetle/error.rb
|
100
102
|
- lib/tigerbeetle/id.rb
|
101
103
|
- lib/tigerbeetle/query_filter.rb
|
102
104
|
- lib/tigerbeetle/request.rb
|