SST  7.1.0
StructuralSimulationToolkit
SST::Link Class Reference

Link between two components. More...

#include <link.h>

Inheritance diagram for SST::Link:
SST::SelfLink

Public Member Functions

 Link (LinkId_t id)
 Create a new link with a given ID.
 
void setLatency (Cycle_t lat)
 set minimum link latency
 
void addRecvLatency (int cycles, std::string timebase)
 Set additional Latency to be added on to events coming in on this link. More...
 
void addRecvLatency (SimTime_t cycles, TimeConverter *timebase)
 Set additional Latency to be added on to events coming in on this link. More...
 
void setFunctor (Event::HandlerBase *functor)
 Set the callback function to be called when a message is delivered. More...
 
void setPolling ()
 Specifies that this link has no callback, and is poll-based only.
 
void send (SimTime_t delay, TimeConverter *tc, Event *event)
 Send an event over the link with additional delay. More...
 
void send (SimTime_t delay, Event *event)
 Send an event with additional delay. More...
 
void send (Event *event)
 Send an event with the Link's default delay. More...
 
Eventrecv ()
 Retrieve a pending event from the Link. More...
 
void setDefaultTimeBase (TimeConverter *tc)
 Manually set the default detaulTimeBase. More...
 
TimeConvertergetDefaultTimeBase ()
 Return the default Time Base for this link.
 
void deliverEvent (Event *event) const
 Causes an event to be delivered to the registered callback.
 
LinkId_t getId ()
 Return the ID of this link.
 
void sendInitData (Event *init_data)
 Send data during the init() phase. More...
 
EventrecvInitData ()
 Receive an event (if any) during the init() phase.
 

Protected Attributes

ActivityQueuerecvQueue
 Queue of events to be received by the owning component.
 
ActivityQueueinitQueue
 Queue of events to be received during init by the owning component.
 
ActivityQueueconfiguredQueue
 Currently active Queue.
 
Event::HandlerBaserFunctor
 Recieve functor. More...
 
TimeConverterdefaultTimeBase
 Timebase used if no other timebase is specified. More...
 
SimTime_t latency
 Latency of the link. More...
 
Linkpair_link
 Pointer to the opposite side of this link.
 

Static Protected Attributes

static ActivityQueueuninitQueue = NULL
 Unitialized queue. More...
 
static ActivityQueueafterInitQueue = NULL
 Unitialized queue. More...
 

Friends

class LinkPair
 
class NewRankSync
 
class NewThreadSync
 
class Simulation
 
class SyncBase
 
class ThreadSync
 
class SyncManager
 
class ComponentInfo
 

Detailed Description

Link between two components.

Carries events

Member Function Documentation

◆ addRecvLatency() [1/2]

void SST::Link::addRecvLatency ( int  cycles,
std::string  timebase 
)

Set additional Latency to be added on to events coming in on this link.

Parameters
cyclesNumber of Cycles to be added
timebaseBase Units of cycles

References SST::TimeLord::getSimCycles(), SST::Simulation::getSimulation(), SST::Simulation::getTimeLord(), latency, and pair_link.

◆ addRecvLatency() [2/2]

void SST::Link::addRecvLatency ( SimTime_t  cycles,
TimeConverter timebase 
)

Set additional Latency to be added on to events coming in on this link.

Parameters
cyclesNumber of Cycles to be added
timebaseBase Units of cycles

References SST::TimeConverter::convertToCoreTime(), latency, and pair_link.

◆ recv()

Event * SST::Link::recv ( )

Retrieve a pending event from the Link.

For links which do not have a set event handler, they can be polled with this function. Returns NULL if there is no pending event.

References SST::ActivityQueue::empty(), SST::ActivityQueue::front(), SST::Simulation::getCurrentSimCycle(), SST::Activity::getDeliveryTime(), SST::Simulation::getSimulation(), SST::ActivityQueue::pop(), and recvQueue.

Referenced by send().

◆ send() [1/3]

void SST::Link::send ( SimTime_t  delay,
TimeConverter tc,
Event event 
)

Send an event over the link with additional delay.

Sends an event over a link with an additional delay specified with a TimeConverter. I.e. the total delay is the link's delay + the additional specified delay.

Parameters
delay- additional delay
tc- time converter to specify units for the additional delay
event- the Event to send

References SST::TimeConverter::convertToCoreTime(), SST::Output::fatal(), SST::Simulation::getCurrentSimCycle(), SST::Simulation::getSimulation(), SST::Simulation::getSimulationOutput(), SST::ActivityQueue::insert(), latency, pair_link, and recvQueue.

Referenced by send(), and setFunctor().

◆ send() [2/3]

void SST::Link::send ( SimTime_t  delay,
Event event 
)
inline

Send an event with additional delay.

Sends an event over a link with additional delay specified by the Link's default timebase.

Parameters
delayThe additional delay, in units of the default Link timebase
eventThe event to send

References defaultTimeBase, and send().

◆ send() [3/3]

void SST::Link::send ( Event event)
inline

Send an event with the Link's default delay.

Parameters
eventThe event to send

References getDefaultTimeBase(), recv(), send(), and setDefaultTimeBase().

◆ sendInitData()

void SST::Link::sendInitData ( Event init_data)

◆ setDefaultTimeBase()

void SST::Link::setDefaultTimeBase ( TimeConverter tc)

Manually set the default detaulTimeBase.

Parameters
tcTimeConverter object for the timebase

References defaultTimeBase.

Referenced by SST::BaseComponent::configureLink(), SST::Simulation::performWireUp(), and send().

◆ setFunctor()

void SST::Link::setFunctor ( Event::HandlerBase functor)
inline

Set the callback function to be called when a message is delivered.

References rFunctor, send(), and setPolling().

Referenced by SST::BaseComponent::configureLink(), and SST::BaseComponent::selfLink().

Field Documentation

◆ afterInitQueue

ActivityQueue * SST::Link::afterInitQueue = NULL
staticprotected

Unitialized queue.

Used for error detection

Referenced by Link().

◆ defaultTimeBase

TimeConverter* SST::Link::defaultTimeBase
protected

Timebase used if no other timebase is specified.

Used to specify the untits for added delays when sending, such as in Link::send(). Often set by the Component::registerClock() function if the regAll argument is true.

Referenced by getDefaultTimeBase(), Link(), send(), and setDefaultTimeBase().

◆ latency

SimTime_t SST::Link::latency
protected

Latency of the link.

It is used by the partitioner as the weight. This latency is added to the delay put on the event by the component.

Referenced by addRecvLatency(), Link(), send(), and setLatency().

◆ rFunctor

Event::HandlerBase* SST::Link::rFunctor
protected

Recieve functor.

This functor is set when the link is connected. Determines what the receiver wants to be called

Referenced by Link(), and setFunctor().

◆ uninitQueue

ActivityQueue * SST::Link::uninitQueue = NULL
staticprotected

Unitialized queue.

Used for error detection

Referenced by Link().


The documentation for this class was generated from the following files: