class Syskit::Composition::CompositionChildInstance

Proxy returned by the child_name_child handler

This is used to perform port mapping if needed

Public Class Methods

new(composition_task, child_name, child_task) click to toggle source
# File lib/syskit/composition.rb, line 289
def initialize(composition_task, child_name, child_task)
    @composition_task, @child_name, @child_task = composition_task, child_name, child_task
end

Public Instance Methods

as_plan() click to toggle source
# File lib/syskit/composition.rb, line 292
def as_plan
    @child_task
end
connect_ports(target_task, mappings) click to toggle source
# File lib/syskit/composition.rb, line 296
def connect_ports(target_task, mappings)
    mapped_connections = Hash.new
    mappings.map do |(source, sink), policy|
        source = find_output_port(source).name
        mapped_connections[[source, sink]] = policy
    end
    @child_task.connect_ports(target_task, mapped_connections)
end
disconnect_ports(target_task, mappings) click to toggle source
# File lib/syskit/composition.rb, line 305
def disconnect_ports(target_task, mappings)
    mappings = mappings.map do |source, sink|
        source = find_output_port(source).name
        [source, sink]
    end
    @child_task.disconnect_ports(target_task, mappings)
end
method_missing(m, *args, &block) click to toggle source
# File lib/syskit/composition.rb, line 317
def method_missing(m, *args, &block)
    if m =~ /_port$/
        port_name = $`
        mapped_port_name = @composition_task.map_child_port(@child_name, port_name)
        if port = @child_task.find_input_port(mapped_port_name)
            return port
        elsif port = @child_task.find_output_port(mapped_port_name)
            return port
        else raise NoMethodError, "task #{@child_task}, child #{@child_name} of #{@composition_task}, has no port called #{port_name}"
        end
    end
    @child_task.send(m, *args, &block)
end
respond_to_missing?(m, include_private) click to toggle source
# File lib/syskit/composition.rb, line 313
def respond_to_missing?(m, include_private)
    (m =~ /_port$/) || super
end