Class ConfigurationSwitch

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class ConfigurationSwitch
    extends TypedAtomicActor
    Split an input stream onto two output ports depending on a boolean selector parameter. The value of the selector parameter specifies the output port that should be written to in this and subsequent iterations. In each iteration, at most one token on each channel of the input port is read and sent to the corresponding channel of the trueOutput port or the falseOutput port, depending on the most value of the selector parameter. If the input has width greater than an output port, then some input tokens will be discarded (those on input channels for which there is no corresponding output channel). Because tokens are immutable, the same Token is sent to the output, rather than a copy. The input port may receive Tokens of any type.

    Note that the this actor may be used in Synchronous Dataflow (SDF) models, but only under certain circumstances. It specifies an output production rate of zero on the output port not used, so downstream actors will not be fired.

    Since:
    Ptolemy II 8.0
    Version:
    $Id$
    Author:
    Charles Shelton
    Pt.AcceptedRating:
    Red (cshelton)
    Pt.ProposedRating:
    Green (cshelton)
    • Field Detail

      • selector

        public PortParameter selector
        PortParameter that selects one of the two input ports. The type is BooleanToken that defaults to false.
      • input

        public TypedIOPort input
        The input port. The type can be anything. This is a multiport, and input tokens on all channels are routed to corresponding channels on the output port, if there are such channels.
      • trueOutput

        public TypedIOPort trueOutput
        Output for tokens on the true path. The type is at least the type of the input.
      • falseOutput

        public TypedIOPort falseOutput
        Output for tokens on the false path. The type is at least the type of the input.
      • trueOutput_tokenProductionRate

        public Parameter trueOutput_tokenProductionRate
        This parameter provides token consumption rate for trueOutput. The type is int and it defaults to zero.
      • falseOutput_tokenProductionRate

        public Parameter falseOutput_tokenProductionRate
        This parameter provides token consumption rate for falseOutput. The type is int and it defaults to one.
    • Method Detail

      • attributeChanged

        public void attributeChanged​(Attribute attribute)
                              throws IllegalActionException
        React to a change in an attribute. This method is called by a contained attribute when its value changes. In this base class, the method does nothing. In derived classes, this method may throw an exception, indicating that the new attribute value is invalid. It is up to the caller to restore the attribute to a valid value if an exception is thrown.
        Overrides:
        attributeChanged in class NamedObj
        Parameters:
        attribute - The attribute that changed.
        Throws:
        IllegalActionException - If the change is not acceptable to this container (not thrown in this base class).
      • clone

        public java.lang.Object clone​(Workspace workspace)
                               throws java.lang.CloneNotSupportedException
        Clone this actor into the specified workspace. The new actor is not added to the directory of that workspace (you must do this yourself if you want it there). The result is a new actor with the same ports as the original, but no connections and no container. A container must be set before much can be done with this actor.
        Overrides:
        clone in class TypedAtomicActor
        Parameters:
        workspace - The workspace for the cloned object.
        Returns:
        A new ComponentEntity.
        Throws:
        java.lang.CloneNotSupportedException - If cloned ports cannot have as their container the cloned entity (this should not occur), or if one of the attributes cannot be cloned.
        See Also:
        NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)