SST::Component Class Reference

Main component object for the simulation. More...

#include <component.h>

Inheritance diagram for SST::Component:
SST::IntrospectedComponent

Public Member Functions

 Component (ComponentId_t id)
 Constructor.
virtual void emergencyShutdown (void)
 Called when SIGINT or SIGTERM has been seen.
ComponentId_t getId () const
 Returns unique component ID.
const std::string & getName () const
 Returns component Name.
virtual void init (unsigned int phase)
 Component's type, set by the factory when the object is created.
virtual void setup ()
 Called after all components have been constructed and inialization has completed, but before simulation time has begun.
virtual void finish ()
 Called after simulation completes, but before objects are destroyed.
virtual bool Status ()
 Currently unused function.
virtual void printStatus (Output &out)
 Called by the Simulation to request that the component print it's current status.
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.
LinkconfigureLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a Link.
LinkconfigureLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a Link.
LinkconfigureSelfLink (std::string name, TimeConverter *time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link).
LinkconfigureSelfLink (std::string name, std::string time_base, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link).
LinkconfigureSelfLink (std::string name, Event::HandlerBase *handler=NULL)
 Configure a SelfLink (Loopback link).
TimeConverterregisterClock (std::string freq, Clock::HandlerBase *handler, bool regAll=true)
 Registers a clock for this component.
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.
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.
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.
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.
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
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 > * registerStatisticCore (std::string statName, std::string statSubId="")
 Registers a statistic.
template<typename T >
Statistic< T > * registerStatistic (std::string statName, std::string statSubId="")
template<typename T >
Statistic< T > * registerStatistic (const char *statName, const char *statSubId="")
bool registerExit ()
 Register that the simulation should not end until this component says it is OK to.
bool unregisterExit ()
 Indicate permission for the simulation to end.
void registerAsPrimaryComponent ()
 Register as a primary component, which allows the component to specifiy when it is and is not OK to end simulation.
void primaryComponentDoNotEndSim ()
 Tells the simulation that it should not exit.
void primaryComponentOKToEndSim ()
 Tells the simulation that it is now OK to end simulation.
ModuleloadModule (std::string type, Params &params)
 Loads a module from an element Library.
ModuleloadModuleWithComponent (std::string type, Component *comp, Params &params)
 Loads a module from an element Library.
SubComponentloadSubComponent (std::string type, Component *comp, Params &params)
 Loads a SubComponent from an element Library.

Static Public Member Functions

static bool isPortValidForComponent (const std::string &comp_name, const std::string &port_name)

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)

Protected Attributes

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

Friends

class SubComponent
class boost::serialization::access

Detailed Description

Main component object for the simulation.

All models inherit from this.


Constructor & Destructor Documentation

SST::Component::Component ( ComponentId_t  id  ) 

Constructor.

Generally only called by the factory class.

Parameters:
id Unique component ID

References SST::Simulation::getSimulation().


Member Function Documentation

Link * SST::Component::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::getLink(), SST::Link::setFunctor(), and SST::Link::setPolling().

Link * SST::Component::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.

References configureLink(), and SST::Simulation::getSimulation().

Link * SST::Component::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::Link::setDefaultTimeBase(), SST::Link::setFunctor(), and SST::Link::setPolling().

Referenced by SST::SubComponent::configureLink(), configureLink(), and configureSelfLink().

Link * SST::Component::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.

References configureLink().

Link * SST::Component::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.

References configureLink().

Link * SST::Component::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.

References configureLink().

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

virtual void SST::Component::emergencyShutdown ( void   )  [inline, virtual]

Called when SIGINT or SIGTERM has been seen.

Allows components opportunity to clean up external state.

virtual void SST::Component::finish (  )  [inline, virtual]

Called after simulation completes, but before objects are destroyed.

A good place to print out statistics.

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

return the time since the simulation began in timebase specified

Parameters:
base Timebase frequency in SI Units

References getCurrentSimTime(), and SST::Simulation::getSimulation().

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

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

Parameters:
tc TimeConverter specificing the units

References SST::TimeConverter::convertFromCoreTime(), and SST::Simulation::getSimulation().

virtual void SST::Component::init ( unsigned int  phase  )  [inline, virtual]

Component's type, set by the factory when the object is created.

It is identical to the configuration string used to create the component. I.e. the XML "<component id="aFoo"><foo>..." would set component::type to "foo" Used during the init phase. The method will be called each phase of initialization. Initialization ends when no components have sent any data.

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

Loads a module from an element Library.

Parameters:
type Fully Qualified library.moduleName
params Parameters the module should use for configuration
Returns:
handle to new instance of module, or NULL on failure.

References SST::Factory::CreateModule(), SST::SimulationBase::getFactory(), and SST::Simulation::getSimulation().

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

Loads a module from an element Library.

Parameters:
type Fully Qualified library.moduleName
comp Pointer to component to pass to Module's constructor
params Parameters the module should use for configuration
Returns:
handle to new instance of module, or NULL on failure.

References SST::Factory::CreateModuleWithComponent(), SST::SimulationBase::getFactory(), and SST::Simulation::getSimulation().

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

Loads a SubComponent from an element Library.

Parameters:
type Fully Qualified library.moduleName
comp Pointer to component to pass to SuComponent's constructor
params Parameters the module should use for configuration
Returns:
handle to new instance of SubComponent, or NULL on failure.

References SST::Factory::CreateSubComponent(), SST::SimulationBase::getFactory(), and SST::Simulation::getSimulation().

void SST::Component::primaryComponentDoNotEndSim (  ) 

Tells the simulation that it should not exit.

The component will remain in this state until a call to primaryComponentOKToEndSim().

See also:
Component::registerAsPrimaryComponent()
Component::primaryComponentOKToEndSim()

References SST::Simulation::getExit(), getId(), SST::Simulation::getSimulation(), and SST::Exit::refInc().

void SST::Component::primaryComponentOKToEndSim (  ) 

Tells the simulation that it is now OK to end simulation.

Simulation will not end until all primary components have called this function.

See also:
Component::registerAsPrimaryComponent()
Component::primaryComponentDoNotEndSim()

References SST::Simulation::getExit(), getId(), SST::Simulation::getSimulation(), and SST::Exit::refDec().

virtual void SST::Component::printStatus ( Output out  )  [inline, virtual]

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

Useful for debugging.

Parameters:
out The Output class which should be used to print component status.
void SST::Component::registerAsPrimaryComponent (  ) 

Register as a primary component, which allows the component to specifiy when it is and is not OK to end simulation.

The simulator will not end simulation natuarally (through use of the Exit object) while any primary component has specified primaryComponentDoNotEndSim(). However, it is still possible for Actions other than Exit to end simulation. Once all primary components have specified primaryComponentOKToEndSim(), the Exit object will trigger and end simulation.

This must be called during simulation wireup (i.e during the constructor for the component). By default, the state of the primary component is set to OKToEndSim.

If no component registers as a primary component, then the Exit object will not be used for that simulation and simulation termination must be accomplished through some other mechanism (e.g. --stopAt flag, or some other Action object).

See also:
Component::primaryComponentDoNotEndSim()
Component::primaryComponentOKToEndSim()
TimeConverter * SST::Component::registerClock ( std::string  freq,
Clock::HandlerBase handler,
bool  regAll = true 
)

Registers a clock for this component.

Parameters:
freq Frequency for the clock in SI units
handler Pointer to Clock::HandlerBase which is to be invoked at the specified interval
regAll Should this clock perioud be used as the default time base for all of the links connected to this component

References defaultTimeBase, SST::LinkMap::getLinkMap(), SST::Simulation::getSimulation(), and SST::Simulation::registerClock().

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

bool SST::Component::registerExit (  ) 

Register that the simulation should not end until this component says it is OK to.

Calling this function (generally done in Component::setup() or in component constructor) increments a global counter. Calls to Component::unregisterExit() decrements the counter. The simulation cannot end unless this counter reaches zero, or the simulation time limit is reached. This counter is synchonized periodically with the other nodes.

See also:
Component::unregisterExit()

References SST::Simulation::getExit(), getId(), SST::Simulation::getSimulation(), and SST::Exit::refInc().

TimeConverter * SST::Component::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:
timeDelay Time delay for the OneShot in SI units
handler Pointer to OneShot::HandlerBase which is to be invoked at the specified interval

References SST::Simulation::getSimulation(), and SST::Simulation::registerOneShot().

template<typename T >
Statistic<T>* SST::Component::registerStatisticCore ( 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:
statName Primary name of the statistic. This name must match the defined ElementInfoStatistic in the component, and must also be enabled in the Python input file.
statSubId An additional sub name for the statistic
Returns:
Either a created statistic of desired type or a NullStatistic depending upon runtime settings.
TimeConverter * SST::Component::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:
base Frequency for the clock in SI units
regAll Should this clock perioud be used as the default time base for all of the links connected to this component

References defaultTimeBase, SST::LinkMap::getLinkMap(), SST::Simulation::getSimulation(), SST::TimeLord::getTimeConverter(), and SST::SimulationBase::getTimeLord().

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

Reactivates an existing Clock and Handler.

Returns:
time of next time clock handler will fire

References SST::Simulation::getSimulation(), and SST::Simulation::reregisterClock().

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

virtual void SST::Component::setup (  )  [inline, virtual]

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

bool SST::Component::unregisterExit (  ) 

Indicate permission for the simulation to end.

This function is the mirror of Component::registerExit(). It decrements the global counter, which, upon reaching zero, indicates that the simulation can terminate.

See also:
Component::registerExit()

References SST::Simulation::getExit(), getId(), SST::Simulation::getSimulation(), and SST::Exit::refDec().


Field Documentation

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

Often set by Component::registerClock() function

Referenced by getCurrentSimTime(), SST::IntrospectedComponent::getFreq(), registerClock(), and registerTimeBase().


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

Generated on 14 Sep 2015 for SST by  doxygen 1.6.1