module SPNet # 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 # 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 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