everscale-client-ruby 1.1.44 → 1.1.49

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87ef2dee945936c8477d06c0e0dabbee92cc96ca9939eae4e0cf5bb89cab063f
4
- data.tar.gz: '0649026d6e877d3e09c01aae5fe2e4280363c01843832fdaa59967c7b159ae21'
3
+ metadata.gz: fd5555c9c9abe1ebd8114686f13a1e9899c1c93c063df2d5cd6aa3eb187e760a
4
+ data.tar.gz: 479f9a3ddabc09d16e5b1087f318bab9ac397ef4820c8dd99a95fa3a67e10e4a
5
5
  SHA512:
6
- metadata.gz: d2fdd97074097786bcef90bd14c9016592253b8317786557d4a2cfa96232633b429d9e675835463959ae45bda279c4154846a7d28385eec8bcbb12f9bb90b926
7
- data.tar.gz: 3d1747266b06dda00fa3761782318011c94c0d8889aa1f92f3ebc34938779f095ddeccd8a10998a5b63879554f105e9531aa7ae13b11887107dacb9f756ad652
6
+ metadata.gz: 2b584f384a498c2fb6656c7ddb43c5538f878ce1c14f1cafd95e457d60cf748c2f21114efc6f65d19eef438b8e46fe204c5cf33ca8c7882dcf25481f8a6e13c9
7
+ data.tar.gz: c2fcb5bb3e0b7a4b33e1cc4cf90887a521af7d0ba0db58fe39d6af958a79564f999cad7a4e3f03886e6e92b796fc23c9028a8bdbc348256e78ce507bb9a0177b
@@ -234,22 +234,33 @@ 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 :core, :context\n"
237
+ content << "#{TAB}#{TAB}attr_reader :context, :context_config, :request_id, :requests\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'
241
241
  content << ((modules.size - 1) == i ? ":_#{m.name}\n" : ":_#{m.name}, ")
242
242
  end
243
243
  content << "#{TAB}#{TAB}MODULE = self.to_s.downcase.gsub(/^(.+::|)(\\w+)$/, '\\2').freeze\n\n"
244
- content << "#{TAB}#{TAB}def initialize(context: Context.new, core: TonClient::TonBinding)\n"
245
- content << "#{TAB}#{TAB}#{TAB}@context = context\n"
246
- content << "#{TAB}#{TAB}#{TAB}@core = core\n#{TAB}#{TAB}end\n\n"
247
- content << "#{TAB}#{TAB}def destroy_context\n"
248
- content << "#{TAB}#{TAB}#{TAB}core.tc_destroy_context(context.id)\n#{TAB}#{TAB}end\n\n"
244
+ content << "#{TAB}#{TAB}def initialize(context_config: {})\n"
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"
248
+ content << "#{TAB}#{TAB}#{TAB}config = TonBinding.make_string(context_config.to_json)\n"
249
+ content << "#{TAB}#{TAB}#{TAB}context_ptr = TonBinding.tc_create_context(config)\n"
250
+ content << "#{TAB}#{TAB}#{TAB}@context = TonBinding.read_string_to_hash(context_ptr)['result']\n"
251
+ content << "#{TAB}#{TAB}#{TAB}ObjectSpace.define_finalizer(self, self.class.finalize(@context))\n"
252
+ content << "#{TAB}#{TAB}end\n\n"
253
+ content << "#{TAB}#{TAB}def self.finalize(ctx)\n"
254
+ content << "#{TAB}#{TAB}#{TAB}Proc.new do\n"
255
+ content << "#{TAB}#{TAB}#{TAB}#{TAB}if (ctx != nil) && (ctx > 0)\n"
256
+ content << "#{TAB}#{TAB}#{TAB}#{TAB}#{TAB}TonBinding.tc_destroy_context(ctx)\n"
257
+ content << "#{TAB}#{TAB}#{TAB}#{TAB}end\n"
258
+ content << "#{TAB}#{TAB}#{TAB}end\n"
259
+ content << "#{TAB}#{TAB}end\n\n"
249
260
  modules.each_with_index do |m, i|
250
261
  next if m.name.downcase == 'client'
251
262
  content << "#{TAB}#{TAB}def #{m.name}\n"
252
- content << "#{TAB}#{TAB}#{TAB}_#{m.name} ||= #{m.name.capitalize}.new(context: context)\n"
263
+ content << "#{TAB}#{TAB}#{TAB}_#{m.name} ||= #{m.name.capitalize}.new(context: context, request_id: request_id, requests: requests)\n"
253
264
  content << "#{TAB}#{TAB}end\n\n"
254
265
  end
255
266
 
@@ -265,11 +276,12 @@ cd everscale-client-ruby\n
265
276
 
266
277
  private def generateModule(mod)
267
278
  content = "module TonClient\n\n#{TAB}class #{mod.name.capitalize}\n#{TAB}#{TAB}include CommonInstanceHelpers\n\n"
268
- content << "#{TAB}#{TAB}attr_reader :core, :context\n"
279
+ content << "#{TAB}#{TAB}attr_reader :context, :request_id, :requests\n"
269
280
  content << "#{TAB}#{TAB}MODULE = self.to_s.downcase.gsub(/^(.+::|)(\\w+)$/, '\\2').freeze\n\n"
270
- content << "#{TAB}#{TAB}def initialize(context: Context.new, core: TonClient::TonBinding)\n"
281
+ content << "#{TAB}#{TAB}def initialize(context: nil, request_id: nil, requests: nil)\n"
271
282
  content << "#{TAB}#{TAB}#{TAB}@context = context\n"
272
- content << "#{TAB}#{TAB}#{TAB}@core = core\n"
283
+ content << "#{TAB}#{TAB}#{TAB}@request_id = request_id\n"
284
+ content << "#{TAB}#{TAB}#{TAB}@requests = requests\n"
273
285
  content << "#{TAB}#{TAB}end\n\n"
274
286
 
275
287
  mod.functions.each do |func|
@@ -287,10 +299,10 @@ cd everscale-client-ruby\n
287
299
  content << "#{TAB}#{TAB}def #{function.name}"
288
300
  if function.arguments.empty?
289
301
  content << "(&block)\n"
290
- content << "#{TAB}#{TAB}#{TAB}core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: {}, &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"
291
303
  else
292
304
  content << "(payload, &block)\n"
293
- content << "#{TAB}#{TAB}#{TAB}core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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"
294
306
  end
295
307
  content << "#{TAB}#{TAB}end\n\n"
296
308
 
@@ -1,52 +1,45 @@
1
+ require 'byebug'
2
+
1
3
  module TonClient
2
4
  module TonBinding
3
- @@request_id = 0
4
- @@requests = {}
5
-
6
5
  class Response
7
- attr_reader :core
8
- attr_accessor :result, :error, :custom_response, :finished, :request_id, :current_response
6
+ attr_accessor :result, :error, :custom_response, :finished, :request_id, :response_type
9
7
 
10
- def initialize(core: TonClient::TonBinding)
11
- @core = core
8
+ def initialize(request_id, string_data, response_type, finished)
9
+ update(request_id, string_data, response_type, finished)
12
10
  end
13
11
 
12
+ private
14
13
  def update(request_id, string_data, response_type, finished)
15
- response_hash = core.read_string_to_hash(string_data)
16
- self.finished = finished
17
- self.request_id = request_id
18
- self.current_response = response_hash
14
+ if response_type == -1
15
+ @finished = true
16
+ @request_id = request_id
17
+ @response_type = response_type
18
+ @error = string_data || "Client deallocated"
19
+ return self
20
+ end
21
+
22
+ response_hash = TonBinding.read_string_to_hash(string_data)
23
+ @finished = finished
24
+ @request_id = request_id
25
+ @response_type = response_type
26
+
19
27
  case response_type
20
28
  when 0
21
29
  # result
22
- self.result = response_hash
30
+ @result = response_hash
23
31
  when 1
24
32
  # error
25
- self.error = response_hash
33
+ @error = response_hash
26
34
  else
27
- # another
28
- if response_type >= 100
29
- self.custom_responses = response_hash
30
- end
35
+ # # another
36
+ # if response_type >= 100
37
+ @custom_response = response_hash
38
+ # end
31
39
  end
32
- end
33
- end
34
-
35
- def self.generate_request_id
36
- @@request_id = 0 if @@request_id == 4294967295
37
- @@request_id += 1
38
- end
39
-
40
- def self.get_request(id)
41
- @@requests[id]
42
- end
43
-
44
- def self.delete_request(id)
45
- @@requests[id] = nil
46
- end
47
40
 
48
- def self.set_request(id, &request_block)
49
- @@requests[id] = request_block
41
+ self
42
+ end
50
43
  end
51
44
  end
52
45
  end
@@ -56,18 +49,19 @@ module TonClient
56
49
 
57
50
  module TonBinding
58
51
  extend FFI::Library
59
- ffi_lib FFI::Library::LIBC
52
+ # ffi_lib FFI::Library::LIBC
53
+ # ffi_lib 'ruby'
60
54
 
61
55
  # memory allocators
62
- attach_function :malloc, [:size_t], :pointer
63
- attach_function :calloc, [:size_t], :pointer
64
- attach_function :valloc, [:size_t], :pointer
65
- attach_function :realloc, [:pointer, :size_t], :pointer
66
- attach_function :free, [:pointer], :void
56
+ # attach_function :malloc, [:size_t], :pointer
57
+ # attach_function :calloc, [:size_t], :pointer
58
+ # attach_function :valloc, [:size_t], :pointer
59
+ # attach_function :realloc, [:pointer, :size_t], :pointer
60
+ # attach_function :free, [:pointer], :void
67
61
 
68
- # memory movers
69
- attach_function :memcpy, [:pointer, :pointer, :size_t], :pointer
70
- attach_function :bcopy, [:pointer, :pointer, :size_t], :void
62
+ # # memory movers
63
+ # attach_function :memcpy, [:pointer, :pointer, :size_t], :pointer
64
+ # attach_function :bcopy, [:pointer, :pointer, :size_t], :void
71
65
 
72
66
  def self.setup_bindings
73
67
 
@@ -116,28 +110,21 @@ module TonClient
116
110
  end
117
111
 
118
112
  def self.make_string(string)
113
+ # p 1
119
114
  result = TonBinding::TcStringDataT.new
120
- result[:content] = FFI::MemoryPointer.from_string(string)
121
- result[:len] = string.bytesize
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
122
125
  result
123
126
  end
124
127
 
125
- # def self.read_string(tc_string_handle)
126
- # is_ref = tc_string_handle.class == TonClient::TonBinding::TcStringHandleT
127
- # if is_ref
128
- # string = tc_read_string(tc_string_handle)
129
- # else
130
- # string = tc_string_handle
131
- # end
132
-
133
- # if string[:content].address > 1
134
- # string = string[:content].read_string(string[:len]).force_encoding('UTF-8') + ''
135
- # tc_destroy_string(tc_string_handle) if is_ref
136
- # return string
137
- # end
138
- # nil
139
- # end
140
-
141
128
  def self.read_string(tc_string_handle)
142
129
  is_ref = tc_string_handle.class == FFI::Pointer
143
130
  if is_ref
@@ -147,11 +134,15 @@ module TonClient
147
134
  end
148
135
 
149
136
  if string[:content].address > 1
150
- string = string[:content].read_string(string[:len]).force_encoding('UTF-8') + ''
151
- tc_destroy_string(tc_string_handle) if is_ref
152
- return string
137
+ result = string[:content].read_string(string[:len])
138
+ if is_ref
139
+ tc_destroy_string(tc_string_handle)
140
+ # free(tc_string_handle)
141
+ end
142
+ result
143
+ else
144
+ nil
153
145
  end
154
- nil
155
146
  end
156
147
 
157
148
  def self.read_string_to_hash(tc_string_handle_t_ref)
@@ -173,29 +164,35 @@ module TonClient
173
164
  return response['error'] if response['error']
174
165
  end
175
166
 
176
- def self.send_request(context: 1, method_name: '', payload: {}, request_id: 1, &block)
167
+ # block = { |response| }
168
+ def self.requestLibrary(context: nil, request_id: nil, requests: nil, sm: nil, method_name: '', payload: {}, &block)
177
169
  raise 'context not found' unless context
178
170
  raise 'method_name is empty' if method_name.empty?
179
-
180
- if block
181
- method_name_string = make_string(method_name)
182
- payload_string = make_string(payload.to_json)
183
- tc_request(context, method_name_string, payload_string, request_id, &block)
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
184
176
  end
185
- end
177
+ method_name_string = make_string(method_name)
178
+ payload_string = make_string(payload.to_json)
186
179
 
187
- # block = { |response| }
188
- def self.requestLibrary(context: 1, method_name: '', payload: {}, &block)
189
- request_id = generate_request_id
190
- set_request(request_id, &block)
191
- send_request(context: context, method_name: method_name, payload: payload, request_id: request_id) do |request_id, string_data, response_type, finished|
192
- if get_request(request_id)
193
- response = Response.new
194
- response.update(request_id, string_data, response_type, finished)
195
- get_request(request_id).call(response)
196
- delete_request(request_id) if finished
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
189
+ end
190
+ rescue => ex
191
+ block.call(Response.new(request_id, ex.message, -1, true)) if block
197
192
  end
198
193
  end
194
+ rescue => ex
195
+ block.call(Response.new(request_id, ex.message, -1, true)) if block
199
196
  end
200
197
 
201
198
  end
@@ -9,13 +9,5 @@ module TonClient
9
9
  layout :content, :pointer,
10
10
  :len, :uint32
11
11
  end
12
-
13
-
14
- # typedef struct {
15
- # } tc_string_handle_t;
16
- class TcStringHandleT < FFI::Struct
17
- layout :content, :pointer,
18
- :len, :uint32
19
- end
20
12
  end
21
13
  end
@@ -3,12 +3,13 @@ module TonClient
3
3
  class Abi
4
4
  include CommonInstanceHelpers
5
5
 
6
- attr_reader :core, :context
6
+ attr_reader :context, :request_id, :requests
7
7
  MODULE = self.to_s.downcase.gsub(/^(.+::|)(\w+)$/, '\2').freeze
8
8
 
9
- def initialize(context: Context.new, core: TonClient::TonBinding)
9
+ def initialize(context: nil, request_id: nil, requests: nil)
10
10
  @context = context
11
- @core = core
11
+ @request_id = request_id
12
+ @requests = requests
12
13
  end
13
14
 
14
15
  # INPUT: ParamsOfEncodeMessageBody
@@ -27,7 +28,7 @@ module TonClient
27
28
  # data_to_sign: String<Optional> - # # Optional data to sign. # # Encoded with `base64`.
28
29
  # # 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`.
29
30
  def encode_message_body(payload, &block)
30
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
31
32
  end
32
33
 
33
34
  # INPUT: ParamsOfAttachSignatureToMessageBody
@@ -38,7 +39,7 @@ module TonClient
38
39
  # RESPONSE: ResultOfAttachSignatureToMessageBody
39
40
  # body: String -
40
41
  def attach_signature_to_message_body(payload, &block)
41
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
42
43
  end
43
44
 
44
45
  # INPUT: ParamsOfEncodeMessage
@@ -59,7 +60,7 @@ module TonClient
59
60
  # address: String - # # Destination address.
60
61
  # message_id: String - # # Message id.
61
62
  def encode_message(payload, &block)
62
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
63
64
  end
64
65
 
65
66
  # INPUT: ParamsOfEncodeInternalMessage
@@ -77,7 +78,7 @@ module TonClient
77
78
  # address: String - # # Destination address.
78
79
  # message_id: String - # # Message id.
79
80
  def encode_internal_message(payload, &block)
80
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
81
82
  end
82
83
 
83
84
  # INPUT: ParamsOfAttachSignature
@@ -89,7 +90,7 @@ module TonClient
89
90
  # message: String - # # Signed message BOC
90
91
  # message_id: String - # # Message ID
91
92
  def attach_signature(payload, &block)
92
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
93
94
  end
94
95
 
95
96
  # INPUT: ParamsOfDecodeMessage
@@ -102,7 +103,7 @@ module TonClient
102
103
  # value: Value<Optional> - # # Parameters or result value.
103
104
  # header: FunctionHeader<Optional> - # # Function header.
104
105
  def decode_message(payload, &block)
105
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
106
107
  end
107
108
 
108
109
  # INPUT: ParamsOfDecodeMessageBody
@@ -116,7 +117,7 @@ module TonClient
116
117
  # value: Value<Optional> - # # Parameters or result value.
117
118
  # header: FunctionHeader<Optional> - # # Function header.
118
119
  def decode_message_body(payload, &block)
119
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
120
121
  end
121
122
 
122
123
  # INPUT: ParamsOfEncodeAccount
@@ -129,7 +130,7 @@ module TonClient
129
130
  # account: String - # # Account BOC encoded in `base64`.
130
131
  # id: String - # # Account ID encoded in `hex`.
131
132
  def encode_account(payload, &block)
132
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
133
134
  end
134
135
 
135
136
  # INPUT: ParamsOfDecodeAccountData
@@ -139,7 +140,7 @@ module TonClient
139
140
  # RESPONSE: ResultOfDecodeAccountData
140
141
  # data: Value - # # Decoded data as a JSON structure.
141
142
  def decode_account_data(payload, &block)
142
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
143
144
  end
144
145
 
145
146
  # INPUT: ParamsOfUpdateInitialData
@@ -151,7 +152,7 @@ module TonClient
151
152
  # RESPONSE: ResultOfUpdateInitialData
152
153
  # data: String - # # Updated data BOC or BOC handle
153
154
  def update_initial_data(payload, &block)
154
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
155
156
  end
156
157
 
157
158
  # INPUT: ParamsOfEncodeInitialData
@@ -162,7 +163,7 @@ module TonClient
162
163
  # RESPONSE: ResultOfEncodeInitialData
163
164
  # data: String - # # Updated data BOC or BOC handle
164
165
  def encode_initial_data(payload, &block)
165
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
166
167
  end
167
168
 
168
169
  # INPUT: ParamsOfDecodeInitialData
@@ -173,7 +174,7 @@ module TonClient
173
174
  # initial_data: Value<Optional> - # # List of initial values of contract's public variables. # # Initial data is decoded if `abi` input parameter is provided
174
175
  # initial_pubkey: String - # # Initial account owner's public key
175
176
  def decode_initial_data(payload, &block)
176
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
177
178
  end
178
179
 
179
180
  # INPUT: ParamsOfDecodeBoc
@@ -183,7 +184,7 @@ module TonClient
183
184
  # RESPONSE: ResultOfDecodeBoc
184
185
  # data: Value - # # Decoded data as a JSON structure.
185
186
  def decode_boc(payload, &block)
186
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
187
188
  end
188
189
 
189
190
  # INPUT: ParamsOfAbiEncodeBoc
@@ -193,7 +194,7 @@ module TonClient
193
194
  # RESPONSE: ResultOfAbiEncodeBoc
194
195
  # boc: String - # # BOC encoded as base64
195
196
  def encode_boc(payload, &block)
196
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
197
198
  end
198
199
 
199
200
  # INPUT: ParamsOfCalcFunctionId
@@ -203,7 +204,7 @@ module TonClient
203
204
  # RESPONSE: ResultOfCalcFunctionId
204
205
  # function_id: Number - # # Contract function ID
205
206
  def calc_function_id(payload, &block)
206
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
207
208
  end
208
209
 
209
210
  end
@@ -3,12 +3,13 @@ module TonClient
3
3
  class Boc
4
4
  include CommonInstanceHelpers
5
5
 
6
- attr_reader :core, :context
6
+ attr_reader :context, :request_id, :requests
7
7
  MODULE = self.to_s.downcase.gsub(/^(.+::|)(\w+)$/, '\2').freeze
8
8
 
9
- def initialize(context: Context.new, core: TonClient::TonBinding)
9
+ def initialize(context: nil, request_id: nil, requests: nil)
10
10
  @context = context
11
- @core = core
11
+ @request_id = request_id
12
+ @requests = requests
12
13
  end
13
14
 
14
15
  # INPUT: ParamsOfParse
@@ -16,7 +17,7 @@ module TonClient
16
17
  # RESPONSE: ResultOfParse
17
18
  # parsed: Value - # # JSON containing parsed BOC
18
19
  def parse_message(payload, &block)
19
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
20
21
  end
21
22
 
22
23
  # INPUT: ParamsOfParse
@@ -24,7 +25,7 @@ module TonClient
24
25
  # RESPONSE: ResultOfParse
25
26
  # parsed: Value - # # JSON containing parsed BOC
26
27
  def parse_transaction(payload, &block)
27
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
28
29
  end
29
30
 
30
31
  # INPUT: ParamsOfParse
@@ -32,7 +33,7 @@ module TonClient
32
33
  # RESPONSE: ResultOfParse
33
34
  # parsed: Value - # # JSON containing parsed BOC
34
35
  def parse_account(payload, &block)
35
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
36
37
  end
37
38
 
38
39
  # INPUT: ParamsOfParse
@@ -40,7 +41,7 @@ module TonClient
40
41
  # RESPONSE: ResultOfParse
41
42
  # parsed: Value - # # JSON containing parsed BOC
42
43
  def parse_block(payload, &block)
43
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
44
45
  end
45
46
 
46
47
  # INPUT: ParamsOfParseShardstate
@@ -50,7 +51,7 @@ module TonClient
50
51
  # RESPONSE: ResultOfParse
51
52
  # parsed: Value - # # JSON containing parsed BOC
52
53
  def parse_shardstate(payload, &block)
53
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
54
55
  end
55
56
 
56
57
  # INPUT: ParamsOfGetBlockchainConfig
@@ -58,7 +59,7 @@ module TonClient
58
59
  # RESPONSE: ResultOfGetBlockchainConfig
59
60
  # config_boc: String - # # Blockchain config BOC encoded as base64
60
61
  def get_blockchain_config(payload, &block)
61
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
62
63
  end
63
64
 
64
65
  # INPUT: ParamsOfGetBocHash
@@ -66,7 +67,7 @@ module TonClient
66
67
  # RESPONSE: ResultOfGetBocHash
67
68
  # hash: String - # # BOC root hash encoded with hex
68
69
  def get_boc_hash(payload, &block)
69
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
70
71
  end
71
72
 
72
73
  # INPUT: ParamsOfGetBocDepth
@@ -74,7 +75,7 @@ module TonClient
74
75
  # RESPONSE: ResultOfGetBocDepth
75
76
  # depth: Number - # # BOC root cell depth
76
77
  def get_boc_depth(payload, &block)
77
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
78
79
  end
79
80
 
80
81
  # INPUT: ParamsOfGetCodeFromTvc
@@ -82,7 +83,7 @@ module TonClient
82
83
  # RESPONSE: ResultOfGetCodeFromTvc
83
84
  # code: String - # # Contract code encoded as base64
84
85
  def get_code_from_tvc(payload, &block)
85
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
86
87
  end
87
88
 
88
89
  # INPUT: ParamsOfBocCacheGet
@@ -90,7 +91,7 @@ module TonClient
90
91
  # RESPONSE: ResultOfBocCacheGet
91
92
  # boc: String<Optional> - # # BOC encoded as base64.
92
93
  def cache_get(payload, &block)
93
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
94
95
  end
95
96
 
96
97
  # INPUT: ParamsOfBocCacheSet
@@ -99,14 +100,14 @@ module TonClient
99
100
  # RESPONSE: ResultOfBocCacheSet
100
101
  # boc_ref: String - # # Reference to the cached BOC
101
102
  def cache_set(payload, &block)
102
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
103
104
  end
104
105
 
105
106
  # INPUT: ParamsOfBocCacheUnpin
106
107
  # pin: String - # # Pinned name
107
108
  # boc_ref: String<Optional> - # # Reference to the cached BOC. # # If it is provided then only referenced BOC is unpinned
108
109
  def cache_unpin(payload, &block)
109
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
110
111
  end
111
112
 
112
113
  # INPUT: ParamsOfEncodeBoc
@@ -115,7 +116,7 @@ module TonClient
115
116
  # RESPONSE: ResultOfEncodeBoc
116
117
  # boc: String - # # Encoded cell BOC or BOC cache key.
117
118
  def encode_boc(payload, &block)
118
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
119
120
  end
120
121
 
121
122
  # INPUT: ParamsOfGetCodeSalt
@@ -124,7 +125,7 @@ module TonClient
124
125
  # RESPONSE: ResultOfGetCodeSalt
125
126
  # salt: String<Optional> - # # Contract code salt if present. # # BOC encoded as base64 or BOC handle
126
127
  def get_code_salt(payload, &block)
127
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
128
129
  end
129
130
 
130
131
  # INPUT: ParamsOfSetCodeSalt
@@ -134,7 +135,7 @@ module TonClient
134
135
  # RESPONSE: ResultOfSetCodeSalt
135
136
  # code: String - # # Contract code with salt set. # # BOC encoded as base64 or BOC handle
136
137
  def set_code_salt(payload, &block)
137
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
138
139
  end
139
140
 
140
141
  # INPUT: ParamsOfDecodeTvc
@@ -153,7 +154,7 @@ module TonClient
153
154
  # split_depth: Number<Optional> - # # Is present and non-zero only in instances of large smart contracts
154
155
  # compiler_version: String<Optional> - # # Compiler version, for example 'sol 0.49.0'
155
156
  def decode_tvc(payload, &block)
156
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
157
158
  end
158
159
 
159
160
  # INPUT: ParamsOfEncodeTvc
@@ -167,7 +168,7 @@ module TonClient
167
168
  # RESPONSE: ResultOfEncodeTvc
168
169
  # tvc: String - # # Contract TVC image BOC encoded as base64 or BOC handle of boc_cache parameter was specified
169
170
  def encode_tvc(payload, &block)
170
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
171
172
  end
172
173
 
173
174
  # INPUT: ParamsOfEncodeExternalInMessage
@@ -180,7 +181,7 @@ module TonClient
180
181
  # message: String - # # Message BOC encoded with `base64`.
181
182
  # message_id: String - # # Message id.
182
183
  def encode_external_in_message(payload, &block)
183
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
184
185
  end
185
186
 
186
187
  # INPUT: ParamsOfGetCompilerVersion
@@ -188,7 +189,7 @@ module TonClient
188
189
  # RESPONSE: ResultOfGetCompilerVersion
189
190
  # version: String<Optional> - # # Compiler version, for example 'sol 0.49.0'
190
191
  def get_compiler_version(payload, &block)
191
- core.requestLibrary(context: context.id, method_name: full_method_name(MODULE, __method__.to_s), payload: 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)
192
193
  end
193
194
 
194
195
  end