Class: TigerBeetle::Client
- Inherits:
-
Object
- Object
- TigerBeetle::Client
- Defined in:
- lib/tigerbeetle/client.rb
Instance Attribute Summary collapse
- #logger ⇒ Object writeonly
Class Method Summary collapse
Instance Method Summary collapse
- #create_accounts(*accounts, &block) ⇒ Object
- #create_transfers(*transfers, &block) ⇒ Object
- #deinit ⇒ Object
- #get_account_balances(filter, &block) ⇒ Object
- #get_account_transfers(filter, &block) ⇒ Object
-
#initialize(cluster_id = 0, address = '3000') ⇒ Client
constructor
A new instance of Client.
- #lookup_accounts(*account_ids, &block) ⇒ Object
- #lookup_transfers(*transfer_ids, &block) ⇒ Object
- #query_accounts(filter, &block) ⇒ Object
- #query_transfers(filter, &block) ⇒ Object
Constructor Details
#initialize(cluster_id = 0, address = '3000') ⇒ Client
Returns a new instance of Client.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/tigerbeetle/client.rb', line 20 def initialize(cluster_id = 0, address = '3000') @inflight_requests = {} # Keep a pointer to prevent proc from getting GCed @callback = Proc.new { |*args| callback(*args) } @client_id = self.class.next_id @client = TBClient::Client.new # FFI::MemoryPointer.new(:pointer, 1) # **void cluster_id_ptr = serialize([cluster_id], Converters::UInt128) status = TBClient.tb_client_init( @client, cluster_id_ptr, address, address.length, @client_id, &@callback ) raise ClientError, "Unable to initialize native client: #{status}" unless status == :SUCCESS # Make sure to deinitialize all clients when the process terminates at_exit { deinit } end |
Instance Attribute Details
#logger=(logger) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/tigerbeetle/client.rb', line 44 def logger=(logger) @logger = logger @log_callback = @logger ? Proc.new { |*args| log_callback(*args) } : nil status = TBClient.tb_client_register_log_callback(@log_callback, true) raise ClientError, "Unable to register logger: #{status}" unless status == :SUCCESS end |
Class Method Details
.next_id ⇒ Object
15 16 17 18 |
# File 'lib/tigerbeetle/client.rb', line 15 def self.next_id @counter ||= AtomicCounter.new @counter.increment end |
Instance Method Details
#create_accounts(*accounts, &block) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/tigerbeetle/client.rb', line 52 def create_accounts(*accounts, &block) submit_request( :CREATE_ACCOUNTS, accounts, Converters::Account, Converters::CreateAccountsResult, &block ) end |
#create_transfers(*transfers, &block) ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/tigerbeetle/client.rb', line 62 def create_transfers(*transfers, &block) submit_request( :CREATE_TRANSFERS, transfers, Converters::Transfer, Converters::CreateTransfersResult, &block ) end |
#deinit ⇒ Object
132 133 134 135 136 137 138 |
# File 'lib/tigerbeetle/client.rb', line 132 def deinit return unless client return unless inflight_requests.empty? TBClient.tb_client_deinit(client) @client = nil end |
#get_account_balances(filter, &block) ⇒ Object
102 103 104 105 106 107 108 109 110 |
# File 'lib/tigerbeetle/client.rb', line 102 def get_account_balances(filter, &block) submit_request( :GET_ACCOUNT_BALANCES, [filter], Converters::AccountFilter, Converters::AccountBalance, &block ) end |
#get_account_transfers(filter, &block) ⇒ Object
92 93 94 95 96 97 98 99 100 |
# File 'lib/tigerbeetle/client.rb', line 92 def get_account_transfers(filter, &block) submit_request( :GET_ACCOUNT_TRANSFERS, [filter], Converters::AccountFilter, Converters::Transfer, &block ) end |
#lookup_accounts(*account_ids, &block) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/tigerbeetle/client.rb', line 72 def lookup_accounts(*account_ids, &block) submit_request( :LOOKUP_ACCOUNTS, account_ids, Converters::UInt128, Converters::Account, &block ) end |
#lookup_transfers(*transfer_ids, &block) ⇒ Object
82 83 84 85 86 87 88 89 90 |
# File 'lib/tigerbeetle/client.rb', line 82 def lookup_transfers(*transfer_ids, &block) submit_request( :LOOKUP_TRANSFERS, transfer_ids, Converters::UInt128, Converters::Transfer, &block ) end |
#query_accounts(filter, &block) ⇒ Object
112 113 114 115 116 117 118 119 120 |
# File 'lib/tigerbeetle/client.rb', line 112 def query_accounts(filter, &block) submit_request( :QUERY_ACCOUNTS, [filter], Converters::QueryFilter, Converters::Account, &block ) end |
#query_transfers(filter, &block) ⇒ Object
122 123 124 125 126 127 128 129 130 |
# File 'lib/tigerbeetle/client.rb', line 122 def query_transfers(filter, &block) submit_request( :QUERY_TRANSFERS, [filter], Converters::QueryFilter, Converters::Transfer, &block ) end |