class Orocos::Async::Log::OutputReader

Attributes

policy[R]
port[R]

Public Class Methods

new(port,reader,options=Hash.new) click to toggle source

@param [Async::OutputPort] port The Asyn::OutputPort @param [Orocos::OutputReader] reader The designated reader

Calls superclass method Orocos::Async::ObjectBase.new
# File lib/orocos/async/log/ports.rb, line 15
def initialize(port,reader,options=Hash.new)
    super(port.name,port.event_loop)
    @options = Kernel.validate_options options, :period => default_period
    @port = port
    # do not queue reachable event no listeners are registered so far
    disable_emitting do 
        reachable! reader
    end
    @port.connect_to do |sample|
        emit_raw_data @delegator_obj.raw_read
        # TODO just emit raw_data and convert it to ruby
        # if someone is listening to (see PortProxy)
        emit_data sample
    end
end

Public Instance Methods

really_add_listener(listener) click to toggle source
# File lib/orocos/async/log/ports.rb, line 31
def really_add_listener(listener)
    return super unless listener.use_last_value?

    if listener.event == :raw_data
        sample = @delegator_obj.raw_read
        if sample
            event_loop.once do
                listener.call sample
            end
        end
    elsif listener.event == :data
        sample = @delegator_obj.read
        if sample
            event_loop.once do
                listener.call sample
            end
        end
    end
    super
end