everscale-client-ruby 1.1.50 → 1.1.53

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: 7c1679c80cf853cae8d1cffde46b65563c2cddaa06c5eb5b05aabe10a3740abf
4
- data.tar.gz: 9e9a8dfcbe28dddebc09981b6a9e13d7c3ed288807d5cd6f22469fe33ba5e13a
3
+ metadata.gz: cd4d1a9ed7a39d8fc2c88766a36ccdd69eb218803b9347d8b0a014ab3762a97b
4
+ data.tar.gz: b78741d14eb45b3ee51fcd538500e2c6727c17e01e36afb3807f6ba40a661d89
5
5
  SHA512:
6
- metadata.gz: 2a437e75114c234743d8be5295b15b62e9a3dface3ce0c7214c718b5bec0f3fb12bf01ccfdfbac5728e7d1ef270ba273455f70a40cd360fe4ef10f8fb38708ee
7
- data.tar.gz: 7f31de976109046cb9351e8f5fa7649e6f086e065ac581cab352188bf1f254f0caf370318575dbd239bb4d40cb2ca5612ebec2e562be6287deed62281b1972bc
6
+ metadata.gz: b3be72dead08887c9f647cedc5bb161b0c76101d8ed333429c58f144a676636b243d09ab52b32ba869a06b61a3adac10fb409a32675180f3d920f8780012f2d0
7
+ data.tar.gz: ae39578957576c391754e87938ac565f0cb50e8af3e4f6893e4ae087fd8fe39dd1d15e5ddb65ec79c539daa7dddec18dba38fdc62bd8ed63210a5e28dfc29d09
@@ -234,7 +234,7 @@ cd everscale-client-ruby\n
234
234
 
235
235
  private def generateClientModule(mod, modules)
236
236
  content = "module TonClient\n\n#{TAB}class #{mod.name.capitalize}\n#{TAB}#{TAB}include CommonInstanceHelpers\n\n"
237
- content << "#{TAB}#{TAB}attr_reader :context, :context_config, :request_id, :requests\n"
237
+ content << "#{TAB}#{TAB}attr_reader :context, :context_config, :request_id, :requests, :monitor\n"
238
238
  content << "#{TAB}#{TAB}private_accessor "
239
239
  modules.each_with_index do |m, i|
240
240
  next if m.name.downcase == 'client'
@@ -243,8 +243,9 @@ cd everscale-client-ruby\n
243
243
  content << "#{TAB}#{TAB}MODULE = self.to_s.downcase.gsub(/^(.+::|)(\\w+)$/, '\\2').freeze\n\n"
244
244
  content << "#{TAB}#{TAB}def initialize(context_config: {})\n"
245
245
  content << "#{TAB}#{TAB}#{TAB}@context_config = context_config\n"
246
- content << "#{TAB}#{TAB}#{TAB}@request_id = Concurrent::AtomicFixnum.new(1)\n"
247
- content << "#{TAB}#{TAB}#{TAB}@requests = Concurrent::Hash.new()\n"
246
+ content << "#{TAB}#{TAB}#{TAB}@request_id = RequestId.new\n"
247
+ content << "#{TAB}#{TAB}#{TAB}@requests = Requests.new\n"
248
+ content << "#{TAB}#{TAB}#{TAB}@monitor = Monitor.new\n"
248
249
  content << "#{TAB}#{TAB}#{TAB}config = TonBinding.make_string(context_config.to_json)\n"
249
250
  content << "#{TAB}#{TAB}#{TAB}context_ptr = TonBinding.tc_create_context(config)\n"
250
251
  content << "#{TAB}#{TAB}#{TAB}@context = TonBinding.read_string_to_hash(context_ptr)['result']\n"
@@ -260,7 +261,7 @@ cd everscale-client-ruby\n
260
261
  modules.each_with_index do |m, i|
261
262
  next if m.name.downcase == 'client'
262
263
  content << "#{TAB}#{TAB}def #{m.name}\n"
263
- content << "#{TAB}#{TAB}#{TAB}_#{m.name} ||= #{m.name.capitalize}.new(context: context, request_id: request_id, requests: requests)\n"
264
+ content << "#{TAB}#{TAB}#{TAB}_#{m.name} ||= #{m.name.capitalize}.new(context: context, request_id: request_id, requests: requests, monitor: monitor)\n"
264
265
  content << "#{TAB}#{TAB}end\n\n"
265
266
  end
266
267
 
@@ -276,12 +277,13 @@ cd everscale-client-ruby\n
276
277
 
277
278
  private def generateModule(mod)
278
279
  content = "module TonClient\n\n#{TAB}class #{mod.name.capitalize}\n#{TAB}#{TAB}include CommonInstanceHelpers\n\n"
279
- content << "#{TAB}#{TAB}attr_reader :context, :request_id, :requests\n"
280
+ content << "#{TAB}#{TAB}attr_reader :context, :request_id, :requests, :monitor\n"
280
281
  content << "#{TAB}#{TAB}MODULE = self.to_s.downcase.gsub(/^(.+::|)(\\w+)$/, '\\2').freeze\n\n"
281
- content << "#{TAB}#{TAB}def initialize(context: nil, request_id: nil, requests: nil)\n"
282
+ content << "#{TAB}#{TAB}def initialize(context: nil, request_id: nil, requests: nil, monitor: nil)\n"
282
283
  content << "#{TAB}#{TAB}#{TAB}@context = context\n"
283
284
  content << "#{TAB}#{TAB}#{TAB}@request_id = request_id\n"
284
285
  content << "#{TAB}#{TAB}#{TAB}@requests = requests\n"
286
+ content << "#{TAB}#{TAB}#{TAB}@monitor = monitor\n"
285
287
  content << "#{TAB}#{TAB}end\n\n"
286
288
 
287
289
  mod.functions.each do |func|
@@ -299,11 +301,12 @@ cd everscale-client-ruby\n
299
301
  content << "#{TAB}#{TAB}def #{function.name}"
300
302
  if function.arguments.empty?
301
303
  content << "(&block)\n"
302
- content << "#{TAB}#{TAB}#{TAB}TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)\n"
304
+ payload = "{}"
303
305
  else
304
306
  content << "(payload, &block)\n"
305
- content << "#{TAB}#{TAB}#{TAB}TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)\n"
307
+ payload = "payload"
306
308
  end
309
+ content << "#{TAB}#{TAB}#{TAB}TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: #{payload}, &block)\n"
307
310
  content << "#{TAB}#{TAB}end\n\n"
308
311
 
309
312
  content
@@ -1,5 +1,3 @@
1
- require 'byebug'
2
-
3
1
  module TonClient
4
2
  module TonBinding
5
3
  class Response
@@ -16,9 +14,10 @@ module TonClient
16
14
  @request_id = request_id
17
15
  @response_type = response_type
18
16
  @error = string_data || "Client deallocated"
17
+ p "ERROR: #{@error}"
19
18
  return self
20
19
  end
21
-
20
+
22
21
  response_hash = TonBinding.read_string_to_hash(string_data)
23
22
  @finished = finished
24
23
  @request_id = request_id
@@ -110,18 +109,9 @@ module TonClient
110
109
  end
111
110
 
112
111
  def self.make_string(string)
113
- # p 1
114
112
  result = TonBinding::TcStringDataT.new
115
- bytes_count = string.unpack("C*").size
116
- ptr1 = FFI::MemoryPointer.new(:char, bytes_count)
117
- ptr1.put_bytes(0, string, 0, bytes_count)
118
- # ptr1.autorelease = false
119
- # p ptr1.autorelease?
120
- result[:content] = ptr1
121
- # result[:content] = FFI::MemoryPointer.from_string(string)
122
- # result[:len] = string.bytesize
123
- result[:len] = ptr1.size
124
- # p 2
113
+ result[:content] = FFI::MemoryPointer.from_string(string)
114
+ result[:len] = string.bytesize
125
115
  result
126
116
  end
127
117
 
@@ -133,7 +123,7 @@ module TonClient
133
123
  string = tc_string_handle
134
124
  end
135
125
 
136
- if string[:content].address > 1
126
+ if string[:len] > 0
137
127
  result = string[:content].read_string(string[:len])
138
128
  if is_ref
139
129
  tc_destroy_string(tc_string_handle)
@@ -165,30 +155,43 @@ module TonClient
165
155
  end
166
156
 
167
157
  # block = { |response| }
168
- def self.requestLibrary(context: nil, request_id: nil, requests: nil, sm: nil, method_name: '', payload: {}, &block)
169
- raise 'context not found' unless context
170
- raise 'method_name is empty' if method_name.empty?
171
- # raise "context: #{context}. request_id not is nil. Client dealloc." unless request_id
172
- unless request_id
173
- # p "context: #{context}. request_id is nil. Client deallocated."
174
- block.call(Response.new(request_id, "Client deallocated", -1, true)) if block
175
- return
176
- end
177
- method_name_string = make_string(method_name)
178
- payload_string = make_string(payload.to_json)
179
-
180
- request_id = request_id.increment
181
- requests[request_id] = block
182
-
183
- tc_request(context, method_name_string, payload_string, request_id) do |request_id, string_data, response_type, finished|
184
- begin
185
- request = requests[request_id]
186
- if request
187
- request.call(Response.new(request_id, string_data, response_type, finished))
188
- requests.delete(request_id) if finished
158
+ def self.requestLibrary(context: nil,
159
+ request_id: nil,
160
+ requests: nil,
161
+ monitor: nil,
162
+ method_name: '',
163
+ payload: {},
164
+ &block
165
+ )
166
+ monitor&.synchronize do
167
+ raise 'context not found' unless context
168
+ raise 'method_name is empty' if method_name.empty?
169
+ # raise "context: #{context}. request_id not is nil. Client dealloc." unless request_id
170
+ unless request_id
171
+ # p "context: #{context}. request_id is nil. Client deallocated."
172
+ block.call(Response.new(request_id, "Client deallocated", -1, true)) if block
173
+ return
174
+ end
175
+ method_name_string = make_string(method_name)
176
+ payload_string = make_string(payload.to_json)
177
+
178
+ request_id = request_id.increment
179
+ requests[request_id] = block
180
+ # p "start #{request_id}"
181
+ tc_request(context, method_name_string, payload_string, request_id) do |request_id, string_data, response_type, finished|
182
+ # p "tc_request #{request_id}"
183
+ # p "Thread.current #{Thread.current}"
184
+ begin
185
+ monitor.synchronize do
186
+ request = requests[request_id]
187
+ if request
188
+ request.call(Response.new(request_id, string_data, response_type, finished))
189
+ requests.delete(request_id) if finished
190
+ end
191
+ end
192
+ rescue => ex
193
+ block.call(Response.new(request_id, ex.message, -1, true)) if block
189
194
  end
190
- rescue => ex
191
- block.call(Response.new(request_id, ex.message, -1, true)) if block
192
195
  end
193
196
  end
194
197
  rescue => ex
@@ -3,13 +3,14 @@ module TonClient
3
3
  class Abi
4
4
  include CommonInstanceHelpers
5
5
 
6
- attr_reader :context, :request_id, :requests
6
+ attr_reader :context, :request_id, :requests, :monitor
7
7
  MODULE = self.to_s.downcase.gsub(/^(.+::|)(\w+)$/, '\2').freeze
8
8
 
9
- def initialize(context: nil, request_id: nil, requests: nil)
9
+ def initialize(context: nil, request_id: nil, requests: nil, monitor: nil)
10
10
  @context = context
11
11
  @request_id = request_id
12
12
  @requests = requests
13
+ @monitor = monitor
13
14
  end
14
15
 
15
16
  # INPUT: ParamsOfEncodeMessageBody
@@ -28,7 +29,7 @@ module TonClient
28
29
  # data_to_sign: String<Optional> - # # Optional data to sign. # # Encoded with `base64`.
29
30
  # # Presents when `message` is unsigned. Can be used for externalmessage signing. Is this case you need to sing this data andproduce signed message using `abi.attach_signature`.
30
31
  def encode_message_body(payload, &block)
31
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
32
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
32
33
  end
33
34
 
34
35
  # INPUT: ParamsOfAttachSignatureToMessageBody
@@ -39,7 +40,7 @@ module TonClient
39
40
  # RESPONSE: ResultOfAttachSignatureToMessageBody
40
41
  # body: String -
41
42
  def attach_signature_to_message_body(payload, &block)
42
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
43
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
43
44
  end
44
45
 
45
46
  # INPUT: ParamsOfEncodeMessage
@@ -60,7 +61,7 @@ module TonClient
60
61
  # address: String - # # Destination address.
61
62
  # message_id: String - # # Message id.
62
63
  def encode_message(payload, &block)
63
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
64
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
64
65
  end
65
66
 
66
67
  # INPUT: ParamsOfEncodeInternalMessage
@@ -78,7 +79,7 @@ module TonClient
78
79
  # address: String - # # Destination address.
79
80
  # message_id: String - # # Message id.
80
81
  def encode_internal_message(payload, &block)
81
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
82
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
82
83
  end
83
84
 
84
85
  # INPUT: ParamsOfAttachSignature
@@ -90,7 +91,7 @@ module TonClient
90
91
  # message: String - # # Signed message BOC
91
92
  # message_id: String - # # Message ID
92
93
  def attach_signature(payload, &block)
93
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
94
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
94
95
  end
95
96
 
96
97
  # INPUT: ParamsOfDecodeMessage
@@ -103,7 +104,7 @@ module TonClient
103
104
  # value: Value<Optional> - # # Parameters or result value.
104
105
  # header: FunctionHeader<Optional> - # # Function header.
105
106
  def decode_message(payload, &block)
106
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
107
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
107
108
  end
108
109
 
109
110
  # INPUT: ParamsOfDecodeMessageBody
@@ -117,7 +118,7 @@ module TonClient
117
118
  # value: Value<Optional> - # # Parameters or result value.
118
119
  # header: FunctionHeader<Optional> - # # Function header.
119
120
  def decode_message_body(payload, &block)
120
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
121
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
121
122
  end
122
123
 
123
124
  # INPUT: ParamsOfEncodeAccount
@@ -130,7 +131,7 @@ module TonClient
130
131
  # account: String - # # Account BOC encoded in `base64`.
131
132
  # id: String - # # Account ID encoded in `hex`.
132
133
  def encode_account(payload, &block)
133
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
134
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
134
135
  end
135
136
 
136
137
  # INPUT: ParamsOfDecodeAccountData
@@ -140,7 +141,7 @@ module TonClient
140
141
  # RESPONSE: ResultOfDecodeAccountData
141
142
  # data: Value - # # Decoded data as a JSON structure.
142
143
  def decode_account_data(payload, &block)
143
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
144
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
144
145
  end
145
146
 
146
147
  # INPUT: ParamsOfUpdateInitialData
@@ -152,7 +153,7 @@ module TonClient
152
153
  # RESPONSE: ResultOfUpdateInitialData
153
154
  # data: String - # # Updated data BOC or BOC handle
154
155
  def update_initial_data(payload, &block)
155
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
156
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
156
157
  end
157
158
 
158
159
  # INPUT: ParamsOfEncodeInitialData
@@ -163,7 +164,7 @@ module TonClient
163
164
  # RESPONSE: ResultOfEncodeInitialData
164
165
  # data: String - # # Updated data BOC or BOC handle
165
166
  def encode_initial_data(payload, &block)
166
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
167
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
167
168
  end
168
169
 
169
170
  # INPUT: ParamsOfDecodeInitialData
@@ -174,7 +175,7 @@ module TonClient
174
175
  # initial_data: Value<Optional> - # # List of initial values of contract's public variables. # # Initial data is decoded if `abi` input parameter is provided
175
176
  # initial_pubkey: String - # # Initial account owner's public key
176
177
  def decode_initial_data(payload, &block)
177
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
178
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
178
179
  end
179
180
 
180
181
  # INPUT: ParamsOfDecodeBoc
@@ -184,7 +185,7 @@ module TonClient
184
185
  # RESPONSE: ResultOfDecodeBoc
185
186
  # data: Value - # # Decoded data as a JSON structure.
186
187
  def decode_boc(payload, &block)
187
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
188
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
188
189
  end
189
190
 
190
191
  # INPUT: ParamsOfAbiEncodeBoc
@@ -194,7 +195,7 @@ module TonClient
194
195
  # RESPONSE: ResultOfAbiEncodeBoc
195
196
  # boc: String - # # BOC encoded as base64
196
197
  def encode_boc(payload, &block)
197
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
198
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
198
199
  end
199
200
 
200
201
  # INPUT: ParamsOfCalcFunctionId
@@ -204,7 +205,7 @@ module TonClient
204
205
  # RESPONSE: ResultOfCalcFunctionId
205
206
  # function_id: Number - # # Contract function ID
206
207
  def calc_function_id(payload, &block)
207
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
208
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
208
209
  end
209
210
 
210
211
  end
@@ -3,13 +3,14 @@ module TonClient
3
3
  class Boc
4
4
  include CommonInstanceHelpers
5
5
 
6
- attr_reader :context, :request_id, :requests
6
+ attr_reader :context, :request_id, :requests, :monitor
7
7
  MODULE = self.to_s.downcase.gsub(/^(.+::|)(\w+)$/, '\2').freeze
8
8
 
9
- def initialize(context: nil, request_id: nil, requests: nil)
9
+ def initialize(context: nil, request_id: nil, requests: nil, monitor: nil)
10
10
  @context = context
11
11
  @request_id = request_id
12
12
  @requests = requests
13
+ @monitor = monitor
13
14
  end
14
15
 
15
16
  # INPUT: ParamsOfParse
@@ -17,7 +18,7 @@ module TonClient
17
18
  # RESPONSE: ResultOfParse
18
19
  # parsed: Value - # # JSON containing parsed BOC
19
20
  def parse_message(payload, &block)
20
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
21
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
21
22
  end
22
23
 
23
24
  # INPUT: ParamsOfParse
@@ -25,7 +26,7 @@ module TonClient
25
26
  # RESPONSE: ResultOfParse
26
27
  # parsed: Value - # # JSON containing parsed BOC
27
28
  def parse_transaction(payload, &block)
28
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
29
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
29
30
  end
30
31
 
31
32
  # INPUT: ParamsOfParse
@@ -33,7 +34,7 @@ module TonClient
33
34
  # RESPONSE: ResultOfParse
34
35
  # parsed: Value - # # JSON containing parsed BOC
35
36
  def parse_account(payload, &block)
36
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
37
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
37
38
  end
38
39
 
39
40
  # INPUT: ParamsOfParse
@@ -41,7 +42,7 @@ module TonClient
41
42
  # RESPONSE: ResultOfParse
42
43
  # parsed: Value - # # JSON containing parsed BOC
43
44
  def parse_block(payload, &block)
44
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
45
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
45
46
  end
46
47
 
47
48
  # INPUT: ParamsOfParseShardstate
@@ -51,7 +52,7 @@ module TonClient
51
52
  # RESPONSE: ResultOfParse
52
53
  # parsed: Value - # # JSON containing parsed BOC
53
54
  def parse_shardstate(payload, &block)
54
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
55
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
55
56
  end
56
57
 
57
58
  # INPUT: ParamsOfGetBlockchainConfig
@@ -59,7 +60,7 @@ module TonClient
59
60
  # RESPONSE: ResultOfGetBlockchainConfig
60
61
  # config_boc: String - # # Blockchain config BOC encoded as base64
61
62
  def get_blockchain_config(payload, &block)
62
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
63
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
63
64
  end
64
65
 
65
66
  # INPUT: ParamsOfGetBocHash
@@ -67,7 +68,7 @@ module TonClient
67
68
  # RESPONSE: ResultOfGetBocHash
68
69
  # hash: String - # # BOC root hash encoded with hex
69
70
  def get_boc_hash(payload, &block)
70
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
71
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
71
72
  end
72
73
 
73
74
  # INPUT: ParamsOfGetBocDepth
@@ -75,7 +76,7 @@ module TonClient
75
76
  # RESPONSE: ResultOfGetBocDepth
76
77
  # depth: Number - # # BOC root cell depth
77
78
  def get_boc_depth(payload, &block)
78
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
79
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
79
80
  end
80
81
 
81
82
  # INPUT: ParamsOfGetCodeFromTvc
@@ -83,7 +84,7 @@ module TonClient
83
84
  # RESPONSE: ResultOfGetCodeFromTvc
84
85
  # code: String - # # Contract code encoded as base64
85
86
  def get_code_from_tvc(payload, &block)
86
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
87
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
87
88
  end
88
89
 
89
90
  # INPUT: ParamsOfBocCacheGet
@@ -91,7 +92,7 @@ module TonClient
91
92
  # RESPONSE: ResultOfBocCacheGet
92
93
  # boc: String<Optional> - # # BOC encoded as base64.
93
94
  def cache_get(payload, &block)
94
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
95
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
95
96
  end
96
97
 
97
98
  # INPUT: ParamsOfBocCacheSet
@@ -100,14 +101,14 @@ module TonClient
100
101
  # RESPONSE: ResultOfBocCacheSet
101
102
  # boc_ref: String - # # Reference to the cached BOC
102
103
  def cache_set(payload, &block)
103
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
104
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
104
105
  end
105
106
 
106
107
  # INPUT: ParamsOfBocCacheUnpin
107
108
  # pin: String - # # Pinned name
108
109
  # boc_ref: String<Optional> - # # Reference to the cached BOC. # # If it is provided then only referenced BOC is unpinned
109
110
  def cache_unpin(payload, &block)
110
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
111
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
111
112
  end
112
113
 
113
114
  # INPUT: ParamsOfEncodeBoc
@@ -116,7 +117,7 @@ module TonClient
116
117
  # RESPONSE: ResultOfEncodeBoc
117
118
  # boc: String - # # Encoded cell BOC or BOC cache key.
118
119
  def encode_boc(payload, &block)
119
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
120
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
120
121
  end
121
122
 
122
123
  # INPUT: ParamsOfGetCodeSalt
@@ -125,7 +126,7 @@ module TonClient
125
126
  # RESPONSE: ResultOfGetCodeSalt
126
127
  # salt: String<Optional> - # # Contract code salt if present. # # BOC encoded as base64 or BOC handle
127
128
  def get_code_salt(payload, &block)
128
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
129
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
129
130
  end
130
131
 
131
132
  # INPUT: ParamsOfSetCodeSalt
@@ -135,7 +136,7 @@ module TonClient
135
136
  # RESPONSE: ResultOfSetCodeSalt
136
137
  # code: String - # # Contract code with salt set. # # BOC encoded as base64 or BOC handle
137
138
  def set_code_salt(payload, &block)
138
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
139
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
139
140
  end
140
141
 
141
142
  # INPUT: ParamsOfDecodeTvc
@@ -154,7 +155,7 @@ module TonClient
154
155
  # split_depth: Number<Optional> - # # Is present and non-zero only in instances of large smart contracts
155
156
  # compiler_version: String<Optional> - # # Compiler version, for example 'sol 0.49.0'
156
157
  def decode_tvc(payload, &block)
157
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
158
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
158
159
  end
159
160
 
160
161
  # INPUT: ParamsOfEncodeTvc
@@ -168,7 +169,7 @@ module TonClient
168
169
  # RESPONSE: ResultOfEncodeTvc
169
170
  # tvc: String - # # Contract TVC image BOC encoded as base64 or BOC handle of boc_cache parameter was specified
170
171
  def encode_tvc(payload, &block)
171
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
172
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
172
173
  end
173
174
 
174
175
  # INPUT: ParamsOfEncodeExternalInMessage
@@ -181,7 +182,7 @@ module TonClient
181
182
  # message: String - # # Message BOC encoded with `base64`.
182
183
  # message_id: String - # # Message id.
183
184
  def encode_external_in_message(payload, &block)
184
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
185
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
185
186
  end
186
187
 
187
188
  # INPUT: ParamsOfGetCompilerVersion
@@ -189,7 +190,7 @@ module TonClient
189
190
  # RESPONSE: ResultOfGetCompilerVersion
190
191
  # version: String<Optional> - # # Compiler version, for example 'sol 0.49.0'
191
192
  def get_compiler_version(payload, &block)
192
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
193
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
193
194
  end
194
195
 
195
196
  end
@@ -3,14 +3,15 @@ module TonClient
3
3
  class Client
4
4
  include CommonInstanceHelpers
5
5
 
6
- attr_reader :context, :context_config, :request_id, :requests
6
+ attr_reader :context, :context_config, :request_id, :requests, :monitor
7
7
  private_accessor :_crypto, :_abi, :_boc, :_processing, :_utils, :_tvm, :_net, :_debot, :_proofs
8
8
  MODULE = self.to_s.downcase.gsub(/^(.+::|)(\w+)$/, '\2').freeze
9
9
 
10
10
  def initialize(context_config: {})
11
11
  @context_config = context_config
12
- @request_id = Concurrent::AtomicFixnum.new(1)
13
- @requests = Concurrent::Hash.new()
12
+ @request_id = RequestId.new
13
+ @requests = Requests.new
14
+ @monitor = Monitor.new
14
15
  config = TonBinding.make_string(context_config.to_json)
15
16
  context_ptr = TonBinding.tc_create_context(config)
16
17
  @context = TonBinding.read_string_to_hash(context_ptr)['result']
@@ -26,51 +27,51 @@ module TonClient
26
27
  end
27
28
 
28
29
  def crypto
29
- _crypto ||= Crypto.new(context: context, request_id: request_id, requests: requests)
30
+ _crypto ||= Crypto.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
30
31
  end
31
32
 
32
33
  def abi
33
- _abi ||= Abi.new(context: context, request_id: request_id, requests: requests)
34
+ _abi ||= Abi.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
34
35
  end
35
36
 
36
37
  def boc
37
- _boc ||= Boc.new(context: context, request_id: request_id, requests: requests)
38
+ _boc ||= Boc.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
38
39
  end
39
40
 
40
41
  def processing
41
- _processing ||= Processing.new(context: context, request_id: request_id, requests: requests)
42
+ _processing ||= Processing.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
42
43
  end
43
44
 
44
45
  def utils
45
- _utils ||= Utils.new(context: context, request_id: request_id, requests: requests)
46
+ _utils ||= Utils.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
46
47
  end
47
48
 
48
49
  def tvm
49
- _tvm ||= Tvm.new(context: context, request_id: request_id, requests: requests)
50
+ _tvm ||= Tvm.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
50
51
  end
51
52
 
52
53
  def net
53
- _net ||= Net.new(context: context, request_id: request_id, requests: requests)
54
+ _net ||= Net.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
54
55
  end
55
56
 
56
57
  def debot
57
- _debot ||= Debot.new(context: context, request_id: request_id, requests: requests)
58
+ _debot ||= Debot.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
58
59
  end
59
60
 
60
61
  def proofs
61
- _proofs ||= Proofs.new(context: context, request_id: request_id, requests: requests)
62
+ _proofs ||= Proofs.new(context: context, request_id: request_id, requests: requests, monitor: monitor)
62
63
  end
63
64
 
64
65
  # RESPONSE: ResultOfGetApiReference
65
66
  # api: Value -
66
67
  def get_api_reference(&block)
67
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
68
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
68
69
  end
69
70
 
70
71
  # RESPONSE: ResultOfVersion
71
72
  # version: String - # # Core Library version
72
73
  def version(&block)
73
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
74
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
74
75
  end
75
76
 
76
77
  # RESPONSE: ClientConfig
@@ -81,21 +82,21 @@ module TonClient
81
82
  # proofs: ProofsConfig<Optional> -
82
83
  # local_storage_path: String<Optional> - # # For file based storage is a folder name where SDK will store its data. For browser based is a browser async storage key prefix. Default (recommended) value is "~/.tonclient" for native environments and ".tonclient" for web-browser.
83
84
  def config(&block)
84
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
85
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
85
86
  end
86
87
 
87
88
  # RESPONSE: ResultOfBuildInfo
88
89
  # build_number: Number - # # Build number assigned to this build by the CI.
89
90
  # dependencies: Array - # # Fingerprint of the most important dependencies.
90
91
  def build_info(&block)
91
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
92
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &block)
92
93
  end
93
94
 
94
95
  # INPUT: ParamsOfResolveAppRequest
95
96
  # app_request_id: Number - # # Request ID received from SDK
96
97
  # result: AppRequestResult - # # Result of request processing
97
98
  def resolve_app_request(payload, &block)
98
- TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
99
+ TonBinding.requestLibrary(context: context, request_id: request_id, requests: requests, monitor: monitor, method_name: full_method_name(MODULE, __method__.to_s), payload: payload, &block)
99
100
  end
100
101
 
101
102
  end