Package ptolemy.domains.dt.kernel
Class DTReceiver
- java.lang.Object
-
- ptolemy.actor.AbstractReceiver
-
- ptolemy.domains.sdf.kernel.SDFReceiver
-
- ptolemy.domains.dt.kernel.DTReceiver
-
- All Implemented Interfaces:
Receiver
public class DTReceiver extends SDFReceiver
A first-in, first-out (FIFO) queue receiver with variable capacity. Tokens are put into the receiver with the put() method, and removed from the receiver with the get() method. The token removed is the oldest one in the receiver. Time is incremented by a fixed amount delta time every time the get() method is called. Each receiver has its own value of delta time. We calculate delta time as "period / (rate * repetitions)" where:- period is the execution time of the director per iteration
- rate is the rate of the port that holds this receiver
- repetitions is the firing count per iteration of the actor that holds this receiver
- Since:
- Ptolemy II 1.0
- Version:
- $Id$
- Author:
- C. Fong
- Pt.AcceptedRating:
- Yellow (vogel)
- Pt.ProposedRating:
- Yellow (chf)
-
-
Field Summary
-
Fields inherited from class ptolemy.domains.sdf.kernel.SDFReceiver
_waitingTokens, INFINITE_CAPACITY
-
-
Constructor Summary
Constructors Constructor Description DTReceiver()Construct an empty receiver with no container.DTReceiver(IOPort container)Construct an empty receiver with the specified container.DTReceiver(IOPort container, int size)Construct an empty receiver with the specified container and size.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidcalculateDeltaTime()Calculate the constant time increment for this receiver.voiddetermineEnds()Determine the source and destination ports that use this receiver in their communications.Tokenget()Remove the first token (the oldest one) from the receiver and return it.doublegetCurrentTime()Deprecated.As of Ptolemy II 4.1, replaced bygetModelTime()doublegetDeltaTime()Return the time interval between tokens for this receiver.TimegetModelTime()Return the local time associated with this receiver.TypedIOPortgetSourcePort()Return the port that feeds this Receiver The port returned by this method is precalculated during the determineEnds() method call.intgetTokenFlowRate()Return the token flow rate for this receiver In DT, the token flow rate has the value "rate * repetitions"; where 'rate' is the port rate and 'repetitions' is the firing count of the actor that contains this receiver.booleanhasToken()Return true if get() will succeed in returning a token.voidput(Token token)Put a token to the receiver.voidreset()Reset this receiver to its initial state, which includes calling clear() and resetting the current time to 0.0.-
Methods inherited from class ptolemy.domains.sdf.kernel.SDFReceiver
clear, elementList, get, getArray, getCapacity, getHistoryCapacity, hasRoom, hasRoom, hasToken, historyElements, historySize, setCapacity, setHistoryCapacity, size
-
Methods inherited from class ptolemy.actor.AbstractReceiver
getContainer, isKnown, putArray, putArrayToAll, putToAll, setContainer, toString
-
-
-
-
Constructor Detail
-
DTReceiver
public DTReceiver()
Construct an empty receiver with no container.
-
DTReceiver
public DTReceiver(IOPort container) throws IllegalActionException
Construct an empty receiver with the specified container.- Parameters:
container- The container of the receiver.- Throws:
IllegalActionException- If the container does not accept this receiver.
-
DTReceiver
public DTReceiver(IOPort container, int size) throws IllegalActionException
Construct an empty receiver with the specified container and size.- Parameters:
container- The container of the receiver.size- The size of the buffer for the receiver.- Throws:
IllegalActionException- If the container does not accept this receiver.
-
-
Method Detail
-
calculateDeltaTime
public void calculateDeltaTime() throws IllegalActionExceptionCalculate the constant time increment for this receiver. This method should only be invoked by the DT Director.- Throws:
IllegalActionException- If there is an error in getting attribute information from the ports.
-
determineEnds
public void determineEnds() throws IllegalActionExceptionDetermine the source and destination ports that use this receiver in their communications. In DT, the source and destination ports are distinct for each receiver because "non-deterministic merge" type relations are not allowed.- Throws:
IllegalActionException
-
get
public Token get()
Remove the first token (the oldest one) from the receiver and return it. If there is no token in the receiver, throw an exception. Increment the local time by deltaTime.- Specified by:
getin interfaceReceiver- Overrides:
getin classSDFReceiver- Returns:
- The oldest token in the receiver.
-
getCurrentTime
@Deprecated public double getCurrentTime()
Deprecated.As of Ptolemy II 4.1, replaced bygetModelTime()Return the local time associated with this receiver.- Overrides:
getCurrentTimein classAbstractReceiver- Returns:
- The local time associated with this receiver.
-
getDeltaTime
public double getDeltaTime()
Return the time interval between tokens for this receiver. Delta time is defined as "period / (token flow rate)"; where period is the director's period parameter and token flow rate is the number of tokens flowing through this receiver per iteration- Returns:
- The time interval between tokens
-
getModelTime
public Time getModelTime()
Return the local time associated with this receiver.- Overrides:
getModelTimein classAbstractReceiver- Returns:
- The local time associated with this receiver.
-
getSourcePort
public TypedIOPort getSourcePort()
Return the port that feeds this Receiver The port returned by this method is precalculated during the determineEnds() method call.- Returns:
- The port that feeds this receiver.
-
getTokenFlowRate
public int getTokenFlowRate()
Return the token flow rate for this receiver In DT, the token flow rate has the value "rate * repetitions"; where 'rate' is the port rate and 'repetitions' is the firing count of the actor that contains this receiver.- Returns:
- The token flow rate of this receiver
-
hasToken
public boolean hasToken()
Return true if get() will succeed in returning a token.- Specified by:
hasTokenin interfaceReceiver- Overrides:
hasTokenin classSDFReceiver- Returns:
- A boolean indicating whether there is a token in this receiver.
-
put
public void put(Token token)
Put a token to the receiver. If the port feeding this receiver is null, report an internal error.- Specified by:
putin interfaceReceiver- Overrides:
putin classSDFReceiver- Parameters:
token- The token to be put to the receiver, or null to put no token.- Throws:
InternalErrorException- If the source port is null.
-
reset
public void reset() throws IllegalActionExceptionReset this receiver to its initial state, which includes calling clear() and resetting the current time to 0.0.- Specified by:
resetin interfaceReceiver- Overrides:
resetin classAbstractReceiver- Throws:
IllegalActionException- If there is no director.
-
-