SST 15.0
Structural Simulation Toolkit
SST::IMPL::PortModule::RandomDrop Class Reference
Inheritance diagram for SST::IMPL::PortModule::RandomDrop:
SST::PortModule SST::Link::AttachPoint SST::Core::Serialization::serializable SST::Core::Serialization::serializable_base

Public Member Functions

 SST_ELI_REGISTER_PORTMODULE (RandomDrop, "sst", "portmodules.random_drop", SST_ELI_ELEMENT_VERSION(0, 1, 0), "Port module that will randomly drop events based on specified propability") SST_ELI_DOCUMENT_PARAMS(
 
uintptr_t registerLinkAttachTool (const AttachPointMetaData &mdata) override
 Function that will be called when a PortModule is registered on sends (i.e.
 
void eventSent (uintptr_t key, Event *&ev) override
 Function that will be called when an event is sent on a link with registered PortModules.
 
uintptr_t registerHandlerIntercept (const AttachPointMetaData &mdata) override
 Function that will be called when a handler is registered with recieves (i.e.
 
void interceptHandler (uintptr_t key, Event *&data, bool &cancel) override
 Function that will be called before the event handler to let the attach point intercept the data.
 
bool installOnReceive () override
 Called to determine if the PortModule should be installed on receives.
 
bool installOnSend () override
 Called to determine if the PortModule should be installed on sends.
 
- Public Member Functions inherited from SST::PortModule
 SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesParams, ELI::ProvidesAttributes) PortModule()=default
 
virtual void serializeEventAttachPointKey (SST::Core::Serialization::serializer &ser, uintptr_t &key) override
 Function that will be called to handle the key returned from registerLinkAttachTool, if the AttachPoint tool is serializable.
 
virtual void serializeHandlerInterceptPointKey (SST::Core::Serialization::serializer &ser, uintptr_t &key) override
 Function that will be called to handle the key returned from registerHandlerIntercept, if the AttachPoint tool is serializable.
 
- Public Member Functions inherited from SST::Core::Serialization::serializable_base
virtual const char * cls_name () const =0
 
virtual uint32_t cls_id () const =0
 
virtual std::string serialization_name () const =0
 

Protected Member Functions

void serialize_order (SST::Core::Serialization::serializer &ser) override
 
 ImplementSerializable (SST::IMPL::PortModule::RandomDrop)
 
- Protected Member Functions inherited from SST::PortModule
UnitAlgebra getCoreTimeBase () const
 Get the core timebase.
 
SimTime_t getCurrentSimCycle () const
 Return the current simulation time as a cycle count.
 
int getCurrentPriority () const
 Return the current priority.
 
UnitAlgebra getElapsedSimTime () const
 Return the elapsed simulation time as a time.
 
OutputgetSimulationOutput () const
 Return the base simulation Output class instance.
 
SimTime_t getCurrentSimTime (TimeConverter *tc) const
 Return the simulated time since the simulation began in units specified by the parameter.
 
SimTime_t getCurrentSimTime (TimeConverter &tc) const
 
SimTime_t getCurrentSimTime (const std::string &base) const
 Return the simulated 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.
 

Additional Inherited Members

- Static Public Attributes inherited from SST::Core::Serialization::serializable
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Static Public Attributes inherited from SST::Core::Serialization::serializable_base
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Protected Types inherited from SST::Core::Serialization::serializable_base
enum  cxn_flag_t { ConstructorFlag }
 
- Static Protected Member Functions inherited from SST::Core::Serialization::serializable_base
static void serializable_abort (uint32_t line, const char *file, const char *func, const char *obj)
 

Member Function Documentation

◆ eventSent()

void SST::IMPL::PortModule::RandomDrop::eventSent ( uintptr_t key,
Event *& ev )
overridevirtual

Function that will be called when an event is sent on a link with registered PortModules.

If ev is set to nullptr, then the event will not be delivered and the function should delete the original event.

NOTE: It is possible to delete the incoming event and replace it with a new event, if this is done, the new event MUST call copyAllDeliveryInfo(ev) or the event will not be properly processed.

Parameters
keyOpaque key returned from registerLinkAttachTool()
evEvent to intercept

Implements SST::PortModule.

References eventSent(), SST::PortModule::getCurrentSimCycle(), and SST::PortModule::getSimulationOutput().

Referenced by eventSent().

◆ installOnReceive()

bool SST::IMPL::PortModule::RandomDrop::installOnReceive ( )
inlineoverridevirtual

Called to determine if the PortModule should be installed on receives.

Returns
true if PortModule should be installed on receives

Reimplemented from SST::PortModule.

◆ installOnSend()

bool SST::IMPL::PortModule::RandomDrop::installOnSend ( )
inlineoverridevirtual

Called to determine if the PortModule should be installed on sends.

NOTE: Install PortModules on sends will have a noticeable impact on performance, consider architecting things so that you can intercept on receives.

Returns
true if PortModule should be installed on sends

Reimplemented from SST::PortModule.

◆ interceptHandler()

void SST::IMPL::PortModule::RandomDrop::interceptHandler ( uintptr_t key,
Event *& data,
bool & cancel )
overridevirtual

Function that will be called before the event handler to let the attach point intercept the data.

The data can be modified, and if cancel is set to true, the handler will not be executed. If cancel is set to true, then the function should also delete the event and set data to nullptr.

NOTE: It is possible to delete the incoming event and replace the it with a new event, if this is done, the new event MUST call copyAllDeliveryInfo(ev) or the event will not be properly processed.

Parameters
keyKey returned from registerHandlerIntercept() function
dataEvent that is to be passed to the handler
[out]cancelSet to true if the handler delivery should be cancelled. If set to true, function must also delete the event

Implements SST::PortModule.

References SST::PortModule::getCurrentSimCycle(), SST::PortModule::getSimulationOutput(), and interceptHandler().

Referenced by interceptHandler().

◆ registerHandlerIntercept()

uintptr_t SST::IMPL::PortModule::RandomDrop::registerHandlerIntercept ( const AttachPointMetaData & mdata)
overridevirtual

Function that will be called when a handler is registered with recieves (i.e.

installOnReceive() returns true). The uintptr_t returned from this function will be passed into the intercept() function.

The default implemenation will just return 0 and only needs to be overwritten if the module needs any of the metadata and/or needs to return a unique key.

Parameters
mdataMetadata to be passed into the tool. NOTE: The metadata will be of type EventHandlerMetaData (see sst/core/event.h)
Returns
Opaque key that will be passed back into the interceptHandler() calls

Reimplemented from SST::PortModule.

References registerHandlerIntercept().

Referenced by registerHandlerIntercept().

◆ registerLinkAttachTool()

uintptr_t SST::IMPL::PortModule::RandomDrop::registerLinkAttachTool ( const AttachPointMetaData & mdata)
overridevirtual

Function that will be called when a PortModule is registered on sends (i.e.

installOnSend() returns true). The uintptr_t returned from this function will be passed into the eventSent() function.

The default implemenation will just return 0 and only needs to be overwritten if the module needs any of the metadata and/or needs to return a unique key.

Parameters
mdataMetadata to be passed into the tool. NOTE: The metadata will be of type EventHandlerMetaData (see sst/core/event.h)
Returns
Opaque key that will be passed back into eventSent() to identify the source of the call

Reimplemented from SST::PortModule.

References registerLinkAttachTool().

Referenced by registerLinkAttachTool().

◆ serialize_order()

void SST::IMPL::PortModule::RandomDrop::serialize_order ( SST::Core::Serialization::serializer & ser)
overrideprotectedvirtual

Reimplemented from SST::PortModule.


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