server/executionhandlers/ruby/connection.rb in cpee-2.1.51 vs server/executionhandlers/ruby/connection.rb in cpee-2.1.52
- old
+ new
@@ -64,13 +64,13 @@
@guard_items = []
end # }}}
def prepare(readonly, endpoints, parameters, replay=false) #{{{
@handler_endpoint = endpoints.is_a?(Array) ? endpoints.map{ |ep| readonly.endpoints[ep] }.compact : readonly.endpoints[endpoints]
- if @controller.attributes['mock']
+ if @controller.attributes['twin_engine']
@handler_endpoint_orig = @handler_endpoint
- @handler_endpoint = @controller.attributes['mock'].to_s + '?original_endpoint=' + Riddl::Protocols::Utils::escape(@handler_endpoint)
+ @handler_endpoint = @controller.attributes['twin_engine'].to_s + '?original_endpoint=' + Riddl::Protocols::Utils::escape(@handler_endpoint)
end
params = parameters.dup
params[:arguments] = params[:arguments].dup if params[:arguments]
params[:arguments]&.map! do |ele|
t = ele.dup
@@ -144,18 +144,45 @@
status, result, headers = client.request type => params
@guard_files += result
if status == 561
- @handler_endpoint = @handler_endpoint_orig
+ if @controller.attributes['twin_translate']
+ gettrans = Riddl::Client.new(@controller.attributes['twin_translate'])
+ gtstatus, gtresult, gtheaders = gettrans.get
+ if gtstatus >= 200 && gtstatus < 300
+ transwhat = case headers['CPEE-TWIN-TASKTYPE']
+ when 'i'; 'instantiation'
+ when 'ir'; 'ipc-receive'
+ when 'is'; 'ipc-send'
+ else
+ 'instantiation'
+ end
+ JSON::parse(gtresult.value.read).each do |e|
+ if e['type'] == transwhat
+ @handler_endpoint = e['endpoint'] if e['endpoint']
+ e['arguments']&.each do |k,a|
+ params.each do |p|
+ p.value = a if p.name == k
+ end
+ end
+ end
+ end
+ end
+ else
+ @handler_endpoint = @handler_endpoint_orig
+ end
params.delete_if { |p| p.name == 'original_endpoint' }
params.each do |p|
if p.name == 'attributes'
t = JSON::parse(p.value) rescue {}
- t['mock'] = @controller.attributes['mock']
+ t['twin_engine'] = @controller.attributes['twin_engine'] if @controller.attributes['twin_engine']
+ t['twin_target'] = @controller.attributes['twin_target'] if @controller.attributes['twin_target']
+ t['twin_translate'] = @controller.attributes['twin_engine'] if @controller.attributes['twin_translate']
p.value = t.to_json
end
end
+ pp params
end
end while status == 561
if status < 200 || status >= 300
headers['CPEE_SALVAGE'] = true