Class DEEvent
- java.lang.Object
-
- ptolemy.domains.de.kernel.DEEvent
-
- All Implemented Interfaces:
java.lang.Comparable
- Direct Known Subclasses:
PtidesEvent
public class DEEvent extends java.lang.Object implements java.lang.ComparableThis class defines the structure of events in the DE domain. Conceptually, a DE event is a trigger that contains a tag and a reference to its destination actor. The purpose of a DE event is to schedule its destination actor to fire at the timestamp and microstep specified by its tag.A tag is a tuple of a timestamp and a microstep. The timestamp is the model time when the event exists. The microstep defines the order of a sequence of (simultaneous) events that exist at the same model time.
A DE event is associated with a destination, which is either an actor or an IO port of an actor. A DE event, whose destination is an actor, is called a pure event. A pure event does not have a destination IO port. A DE event, whose destination is an IO port, is called a trigger event. A trigger event has a destination actor, which is the container of the destination IO port.
A DE event also has a depth, which is the topology information of its destinations. For a pure event, the depth is that of its destination actor. For a trigger event, the depth is that of its destination IO port. A larger value of depth indicates a lower priority when the simulator processes events with the same tag.
Two DE events can be compared to see which one happens first. The order is defined by the relationship between their time stamps, microsteps, and depths. See
DEEventQueuefor more details. DE events can be compared by using the compareTo() method.This class is final to improve the simulation performance because new events get created and discarded through the whole simulation.
- Since:
- Ptolemy II 0.2
- Version:
- $Id$
- Author:
- Lukito Muliadi, Edward A. Lee, Haiyang Zheng, Contributor: Christopher Brooks
- Pt.AcceptedRating:
- Green (hyzheng)
- Pt.ProposedRating:
- Green (hyzheng)
-
-
Field Summary
Fields Modifier and Type Field Description protected Actor_actorThe destination actor.protected int_depthThe depth of this event.protected IOPort_ioPortThe destination IO port.protected int_microstepThe microstep of this event.protected int_priorityThe priority of the event (used when the timestamp, depth and microstep cannot resolve a conflict.protected Time_timestampThe timestamp of the event.
-
Constructor Summary
Constructors Constructor Description DEEvent(Actor actor, Time timeStamp, int microstep, int depth)Construct a pure event with the specified destination actor, timestamp, microstep, and depth.DEEvent(IOPort ioPort, Time timeStamp, int microstep, int depth)Construct a trigger event with the specified destination IO port, timestamp, microstep, and depth.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Actoractor()Return the destination actor for this event.intcompareTo(java.lang.Object event)Compare this event with the argument event for an order.intcompareTo(DEEvent event)Compare the tag and depth of this event with those of the argument event for the order.intdepth()Return the depth of this event.booleanequals(java.lang.Object object)Indicate whether some other object is equal to this DE Event.inthashCode()Return the hash code for the event object.booleanhasTheSameTagAndDepthAs(DEEvent event)Return true if this event has the same tag with the specified one, and their depths are the same.booleanhasTheSameTagAs(DEEvent event)Return true if this event has the same tag as the argument DE event.IOPortioPort()Return the destination IO port of this event.intmicrostep()Return the microstep of this event.TimetimeStamp()Return the timestamp.java.lang.StringtoString()Return a description of the event, including the the tag, depth, and destination information.
-
-
-
Field Detail
-
_actor
protected Actor _actor
The destination actor.
-
_depth
protected int _depth
The depth of this event.
-
_ioPort
protected IOPort _ioPort
The destination IO port.
-
_microstep
protected int _microstep
The microstep of this event.
-
_priority
protected int _priority
The priority of the event (used when the timestamp, depth and microstep cannot resolve a conflict.
-
_timestamp
protected Time _timestamp
The timestamp of the event.
-
-
Constructor Detail
-
DEEvent
public DEEvent(Actor actor, Time timeStamp, int microstep, int depth) throws IllegalActionException
Construct a pure event with the specified destination actor, timestamp, microstep, and depth.- Parameters:
actor- The destination actortimeStamp- The time when the event occurs.microstep- The phase of execution within a fixed time.depth- The topological depth of the destination actor.- Throws:
IllegalActionException- If the actor has a priority parameter, but its value cannot be obtained, which should be an integer.
-
DEEvent
public DEEvent(IOPort ioPort, Time timeStamp, int microstep, int depth) throws IllegalActionException
Construct a trigger event with the specified destination IO port, timestamp, microstep, and depth.- Parameters:
ioPort- The destination IO port.timeStamp- The time when the event occurs.microstep- The phase of execution within a fixed time.depth- The topological depth of the destination IO Port.- Throws:
IllegalActionException- If the actor has a priority parameter, but its value cannot be obtained, which should be an integer.
-
-
Method Detail
-
actor
public final Actor actor()
Return the destination actor for this event.- Returns:
- The destination actor.
-
compareTo
public final int compareTo(DEEvent event)
Compare the tag and depth of this event with those of the argument event for the order. Return -1, 0, or 1 if this event happens earlier than, the same time as, or later than the argument event.Their timestamps are compared first. If the two timestamps are not the same, their order defines the events' order. Otherwise, the microsteps of events are compared for the order, where an event with the smaller microstep happens earlier. If the events have the same microstep, their depths are compared. The event with a smaller depth happens earlier. If the two events have the same tag and depth, then they happen at the same time.
- Parameters:
event- The event to compare against.- Returns:
- -1, 0, or 1, depends on the order of the events.
-
compareTo
public final int compareTo(java.lang.Object event)
Compare this event with the argument event for an order. SeecompareTo(DEEvent event)for the comparison rules. The argument event has to be an instance of DEEvent. Otherwise, a ClassCastException will be thrown.- Specified by:
compareToin interfacejava.lang.Comparable- Parameters:
event- The event to compare against.- Returns:
- -1, 0, or 1, depending on the order of the events.
- Throws:
java.lang.ClassCastException- If the argument event is not an instance of DEEvent.
-
depth
public final int depth()
Return the depth of this event. For a pure event, it is the depth of the destination actor in the topological sort. For a trigger event, it is the depth of the destination IO port.- Returns:
- The depth of this event.
-
equals
public boolean equals(java.lang.Object object)
Indicate whether some other object is equal to this DE Event. DEEvents are equal if they are associated with the same actors and compareTo() returns 0;- Overrides:
equalsin classjava.lang.Object- Parameters:
object- The object with which to compare.- Returns:
- true if the object is a DEEvent and the fields of the object and of this object are equal.
- See Also:
hashCode()
-
hasTheSameTagAndDepthAs
public final boolean hasTheSameTagAndDepthAs(DEEvent event)
Return true if this event has the same tag with the specified one, and their depths are the same.- Parameters:
event- The event to compare against.- Returns:
- True if this event has the same tag with the specified one, and their depths are the same.
-
hasTheSameTagAs
public boolean hasTheSameTagAs(DEEvent event)
Return true if this event has the same tag as the argument DE event.- Parameters:
event- The DE event to compare against.- Returns:
- True if this event has the same tag as the specified one.
-
hashCode
public int hashCode()
Return the hash code for the event object.- Overrides:
hashCodein classjava.lang.Object- Returns:
- The hash code for the event object.
- See Also:
equals(Object)
-
ioPort
public final IOPort ioPort()
Return the destination IO port of this event. Note that for a pure event, the destination IO Port is null.- Returns:
- The destination ioPort.
-
microstep
public final int microstep()
Return the microstep of this event.- Returns:
- The microstep of this event.
-
timeStamp
public final Time timeStamp()
Return the timestamp.- Returns:
- The timestamp.
-
toString
public java.lang.String toString()
Return a description of the event, including the the tag, depth, and destination information.- Overrides:
toStringin classjava.lang.Object- Returns:
- The token as a string with the time stamp.
-
-