lib/spnet/ports/signal_out_port.rb in spnet-0.1.6 vs lib/spnet/ports/signal_out_port.rb in spnet-0.1.7

- old
+ new

@@ -3,21 +3,35 @@ # Output signal values to a connected SignalInPort object. # # @author James Tunnell class SignalOutPort < OutPort + attr_reader :queue + # A new instance of SignalOutPort. def initialize + @queue = [] super(:matching_class => SignalInPort) end - # If linked, return the result of calling the connected SignalInPort object's - # enqueue_values method. Otherwise, return false. - def send_values values - if linked? + # Add values to queue or send them directly to linked port + # (if autosend is true). + # @param [Array] values The values to add. + # @param [true/false] autosend If true, and this port is linked to another + # port, skip this port's queue and enqueue values + # directly on the linked port's queue. + def enqueue_values values, autosend = true + if autosend && linked? @link.to.enqueue_values values + else + @queue.concat values end - return false end + # Remove values to queue. + # @param [Fixnum] count Number of values to remove. + def dequeue_values count = @queue.count + raise ArgumentError, "count is greater than @queue.count" if count > @queue.count + @queue.slice!(0...count) + end end end