SST  7.1.0
StructuralSimulationToolkit
SST::BaseComponent Class Referenceabstract

Main component object for the simulation. More...

#include <baseComponent.h>

Inheritance diagram for SST::BaseComponent:
SST::Component SST::SubComponent SST::Interfaces::SimpleMem SST::Interfaces::SimpleNetwork SST::Interfaces::SimpleNetwork::NetworkInspector

Public Member Functions

ComponentId_t getId () const
 Returns unique component ID.
 
virtual void emergencyShutdown (void)
 Called when SIGINT or SIGTERM has been seen. More...
 
const std::string & getName () const
 Returns component Name.
 
virtual void init (unsigned int UNUSED(phase))
 Used during the init phase. More...
 
virtual void setup ()
 Called after all components have been constructed and inialization has completed, but before simulation time has begun. More...
 
virtual void finish ()
 Called after simulation completes, but before objects are destroyed. More...
 
virtual bool Status ()
 Currently unused function.
 
virtual void printStatus (Output &UNUSED(out))
 Called by the Simulation to request that the component print it's current status. More...
 
bool isPortConnected (const std::string &name) const
 Determine if a port name is connected to any links.
 
LinkconfigureLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a Link. More...
 
LinkconfigureSelfLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
LinkconfigureSelfLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link) More...
 
TimeConverterregisterClock (std::string freq, Clock::HandlerBase *handler, bool regAll=true)
 Registers a clock for this component. More...
 
TimeConverterregisterClock (const UnitAlgebra &freq, Clock::HandlerBase *handler, bool regAll=true)
 
void unregisterClock (TimeConverter *tc, Clock::HandlerBase *handler)
 Removes a clock handler from the component.
 
Cycle_t reregisterClock (TimeConverter *freq, Clock::HandlerBase *handler)
 Reactivates an existing Clock and Handler. More...
 
Cycle_t getNextClockCycle (TimeConverter *freq)
 Returns the next Cycle that the TimeConverter would fire.
 
TimeConverterregisterOneShot (std::string timeDelay, OneShot::HandlerBase *handler)
 Registers a OneShot event for this component. More...
 
TimeConverterregisterOneShot (const UnitAlgebra &timeDelay, OneShot::HandlerBase *handler)
 
TimeConverterregisterTimeBase (std::string base, bool regAll=true)
 Registers a default time base for the component and optionally sets the the component's links to that timebase. More...
 
TimeConvertergetTimeConverter (const std::string &base)
 
TimeConvertergetTimeConverter (const UnitAlgebra &base)
 
SimTime_t getCurrentSimTime (TimeConverter *tc) const
 return the time since the simulation began in units specified by the parameter. More...
 
SimTime_t getCurrentSimTime () const
 return the time since the simulation began in the default timebase
 
SimTime_t getCurrentSimTime (std::string base)
 return the time since the simulation began in timebase specified More...
 
SimTime_t getCurrentSimTimeNano () const
 Utility function to return the time since the simulation began in nanoseconds.
 
SimTime_t getCurrentSimTimeMicro () const
 Utility function to return the time since the simulation began in microseconds.
 
SimTime_t getCurrentSimTimeMilli () const
 Utility function to return the time since the simulation began in milliseconds.
 
template<typename T >
Statistic< T > * registerStatistic (std::string statName, std::string statSubId="")
 Registers a statistic. More...
 
template<typename T >
Statistic< T > * registerStatistic (const char *statName, const char *statSubId="")
 
ModuleloadModule (std::string type, Params &params)
 Loads a module from an element Library. More...
 
ModuleloadModuleWithComponent (std::string type, Component *comp, Params &params)
 Loads a module from an element Library. More...
 
SubComponentloadSubComponent (std::string type, Component *comp, Params &params)
 Loads a SubComponent from an element Library. More...
 
SubComponentloadNamedSubComponent (std::string name)
 
SubComponentloadNamedSubComponent (std::string name, Params &params)
 
SubComponentSlotInfogetSubComponentSlotInfo (std::string name, bool fatalOnEmptyIndex=false)
 
const std::vector< double > & getCoordinates () const
 Retrieve the X,Y,Z coordinates of this component.
 

Protected Member Functions

void setDefaultTimeBase (TimeConverter *tc)
 Manually set the default detaulTimeBase.
 
LinkselfLink (std::string name, Event::HandlerBase *handler=NULL)
 Creates a new selfLink.
 
SharedRegiongetLocalSharedRegion (const std::string &key, size_t size)
 Find a lookup table.
 
SharedRegiongetGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=NULL)
 
SimulationgetSimulation () const
 
virtual bool doesComponentInfoStatisticExist (const std::string &statisticName) const =0
 
uint8_t getComponentInfoStatisticEnableLevel (const std::string &statisticName) const
 
std::string getComponentInfoStatisticUnits (const std::string &statisticName) const
 
virtual ComponentgetTrueComponent () const =0
 
virtual BaseComponentgetStatisticOwner () const =0
 Returns self if Component If sub-component, returns self if a "modern" subcomponent otherwise, return base component.
 

Protected Attributes

TimeConverterdefaultTimeBase
 Timebase used if no other timebase is specified for calls like BaseComponent::getCurrentSimTime(). More...
 
ComponentInfomy_info
 
Simulationsim
 
ComponentInfocurrentlyLoadingSubComponent
 

Friends

class SubComponentSlotInfo_impl
 
class SST::Statistics::StatisticProcessingEngine
 

Detailed Description

Main component object for the simulation.

Member Function Documentation

◆ configureLink() [1/3]

Link * SST::BaseComponent::configureLink ( std::string  name,
TimeConverter time_base,
Event::HandlerBase handler = NULL 
)

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
time_base- Time Base of the link
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

References SST::LinkMap::getLink(), SST::LinkMap::getLinkMap(), SST::Link::setDefaultTimeBase(), SST::Link::setFunctor(), and SST::Link::setPolling().

◆ configureLink() [2/3]

Link * SST::BaseComponent::configureLink ( std::string  name,
std::string  time_base,
Event::HandlerBase handler = NULL 
)

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
time_base- Time Base of the link
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

◆ configureLink() [3/3]

Link * SST::BaseComponent::configureLink ( std::string  name,
Event::HandlerBase handler = NULL 
)

Configure a Link.

Parameters
name- Port Name on which the link to configure is attached.
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

References SST::LinkMap::addSelfPort(), SST::LinkMap::getLink(), SST::LinkMap::getLinkMap(), SST::LinkMap::insertLink(), SST::Link::setDefaultTimeBase(), SST::Link::setFunctor(), and SST::Link::setPolling().

◆ configureSelfLink() [1/3]

Link * SST::BaseComponent::configureSelfLink ( std::string  name,
TimeConverter time_base,
Event::HandlerBase handler = NULL 
)

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
time_base- Time Base of the link
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

◆ configureSelfLink() [2/3]

Link * SST::BaseComponent::configureSelfLink ( std::string  name,
std::string  time_base,
Event::HandlerBase handler = NULL 
)

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
time_base- Time Base of the link
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

◆ configureSelfLink() [3/3]

Link * SST::BaseComponent::configureSelfLink ( std::string  name,
Event::HandlerBase handler = NULL 
)

Configure a SelfLink (Loopback link)

Parameters
name- Name of the self-link port
handler- Optional Handler to be called when an Event is received
Returns
A pointer to the configured link, or NULL if an error occured.

◆ emergencyShutdown()

virtual void SST::BaseComponent::emergencyShutdown ( void  )
inlinevirtual

Called when SIGINT or SIGTERM has been seen.

Allows components opportunity to clean up external state.

◆ finish()

virtual void SST::BaseComponent::finish ( )
inlinevirtual

Called after simulation completes, but before objects are destroyed.

A good place to print out statistics.

Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.

◆ getCurrentSimTime() [1/2]

SimTime_t SST::BaseComponent::getCurrentSimTime ( TimeConverter tc) const

return the time since the simulation began in units specified by the parameter.

Parameters
tcTimeConverter specificing the units

References SST::TimeConverter::convertFromCoreTime().

◆ getCurrentSimTime() [2/2]

SimTime_t SST::BaseComponent::getCurrentSimTime ( std::string  base)

return the time since the simulation began in timebase specified

Parameters
baseTimebase frequency in SI Units

◆ init()

virtual void SST::BaseComponent::init ( unsigned int   UNUSEDphase)
inlinevirtual

Used during the init phase.

The method will be called each phase of initialization. Initialization ends when no components have sent any data.

Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.

◆ loadModule()

Module * SST::BaseComponent::loadModule ( std::string  type,
Params params 
)

Loads a module from an element Library.

Parameters
typeFully Qualified library.moduleName
paramsParameters the module should use for configuration
Returns
handle to new instance of module, or NULL on failure.

◆ loadModuleWithComponent()

Module * SST::BaseComponent::loadModuleWithComponent ( std::string  type,
Component comp,
Params params 
)

Loads a module from an element Library.

Parameters
typeFully Qualified library.moduleName
compPointer to component to pass to Module's constructor
paramsParameters the module should use for configuration
Returns
handle to new instance of module, or NULL on failure.

◆ loadSubComponent()

SubComponent * SST::BaseComponent::loadSubComponent ( std::string  type,
Component comp,
Params params 
)

Loads a SubComponent from an element Library.

Parameters
typeFully Qualified library.moduleName
compPointer to component to pass to SuBaseComponent's constructor
paramsParameters the module should use for configuration
Returns
handle to new instance of SubComponent, or NULL on failure.

References SST::Output::fatal(), SST::Simulation::getSimulationOutput(), SST::Params::insert(), SST::Output::output(), and SST::Output::STDERR.

Referenced by SST::SubComponent::getStatisticOwner().

◆ printStatus()

virtual void SST::BaseComponent::printStatus ( Output UNUSEDout)
inlinevirtual

Called by the Simulation to request that the component print it's current status.

Useful for debugging.

Parameters
outThe Output class which should be used to print component status.

◆ registerClock()

TimeConverter * SST::BaseComponent::registerClock ( std::string  freq,
Clock::HandlerBase handler,
bool  regAll = true 
)

Registers a clock for this component.

Parameters
freqFrequency for the clock in SI units
handlerPointer to Clock::HandlerBase which is to be invoked at the specified interval
regAllShould this clock perioud be used as the default time base for all of the links connected to this component

References SST::LinkMap::getLinkMap().

◆ registerOneShot()

TimeConverter * SST::BaseComponent::registerOneShot ( std::string  timeDelay,
OneShot::HandlerBase handler 
)

Registers a OneShot event for this component.

Note: OneShot cannot be canceled, and will always callback after the timedelay.

Parameters
timeDelayTime delay for the OneShot in SI units
handlerPointer to OneShot::HandlerBase which is to be invoked at the specified interval

◆ registerStatistic()

template<typename T >
Statistic<T>* SST::BaseComponent::registerStatistic ( std::string  statName,
std::string  statSubId = "" 
)
inline

Registers a statistic.

If Statistic is allowed to run (controlled by Python runtime parameters), then a statistic will be created and returned. If not allowed to run, then a NullStatistic will be returned. In either case, the returned value should be used for all future Statistic calls. The type of Statistic and the Collection Rate is set by Python runtime parameters. If no type is defined, then an Accumulator Statistic will be provided by default. If rate set to 0 or not provided, then the statistic will output results only at end of sim (if output is enabled).

Parameters
statNamePrimary name of the statistic. This name must match the defined ElementInfoStatistic in the component, and must also be enabled in the Python input file.
statSubIdAn additional sub name for the statistic
Returns
Either a created statistic of desired type or a NullStatistic depending upon runtime settings.

◆ registerTimeBase()

TimeConverter * SST::BaseComponent::registerTimeBase ( std::string  base,
bool  regAll = true 
)

Registers a default time base for the component and optionally sets the the component's links to that timebase.

Useful for components which do not have a clock, but would like a default timebase.

Parameters
baseFrequency for the clock in SI units
regAllShould this clock perioud be used as the default time base for all of the links connected to this component

References SST::LinkMap::getLinkMap().

◆ reregisterClock()

Cycle_t SST::BaseComponent::reregisterClock ( TimeConverter freq,
Clock::HandlerBase handler 
)

Reactivates an existing Clock and Handler.

Returns
time of next time clock handler will fire

◆ setup()

virtual void SST::BaseComponent::setup ( )
inlinevirtual

Called after all components have been constructed and inialization has completed, but before simulation time has begun.

Reimplemented in SST::Interfaces::SimpleNetwork, and SST::SubComponent.

Field Documentation

◆ defaultTimeBase

TimeConverter* SST::BaseComponent::defaultTimeBase
protected

Timebase used if no other timebase is specified for calls like BaseComponent::getCurrentSimTime().

Often set by BaseComponent::registerClock() function


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