From 8464fb4df105a2bd066dd1ebfe618174760cefc9 Mon Sep 17 00:00:00 2001 From: seixasxbr Date: Wed, 2 Oct 2024 16:43:25 -0300 Subject: [PATCH] fix: load opaque type at as_data_service method --- lib/syskit/log/task_streams.rb | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/syskit/log/task_streams.rb b/lib/syskit/log/task_streams.rb index dd364512..bc2bd0a5 100644 --- a/lib/syskit/log/task_streams.rb +++ b/lib/syskit/log/task_streams.rb @@ -205,10 +205,11 @@ def as_data_service(srv_m, service_to_component_port = {}) task_m = Syskit::TaskContext.new_submodel do srv_m.each_port do |p| component_name = service_to_component_port[p.name] || p.name + type = Roby.app.default_loader.opaque_type_for(p.type) if p.input? - input_port component_name, p.type + input_port component_name, type else - output_port component_name, p.type + output_port component_name, type end end provides srv_m, service_to_component_port, as: "replayed_service" @@ -229,11 +230,15 @@ def resolve_streams_for_service(srv_m, service_to_component_port) srv_m.each_port.map do |p| stream_name = service_to_component_port[p.name] || p.name stream = find_port_by_name(stream_name) - unless stream - raise ArgumentError, - "cannot find stream #{stream_name} for service port #{p.name}" + next(stream) if stream + + available_ports = each_port_stream.sort_by(&:first).map do |name, s| + "#{name} (#{s.type.name})" end - stream + raise ArgumentError, + "cannot find stream #{stream_name} for "\ + "service port #{p.name}, available ports: "\ + "#{available_ports.join(", ")}" end end end