12#ifndef SST_CORE_ONESHOTMANAGER_H
13#define SST_CORE_ONESHOTMANAGER_H
15#include "sst/core/action.h"
16#include "sst/core/sst_types.h"
17#include "sst/core/ssthandler.h"
35using TimeStamp_t = std::pair<SimTime_t, int>;
38class OneShot :
public Action
65 template <
typename classT, auto funcT,
typename dataT =
void>
68 template <
typename classT, auto funcT,
typename dataT =
void>
69 using Handler2 [[deprecated(
70 "The name Handler2 has been deprecated and will be removed in SST 17. Please rename Handler2 to Handler.")]]
73 using HandlerList_t = std::vector<OneShot::HandlerBase*>;
76 HandlerList_t& handlers;
79 OneShot(TimeStamp_t time,
OneShotManager* manager, HandlerList_t& handlers) :
102 using HandlerVectorMap_t = std::map<TimeStamp_t, std::pair<OneShot::HandlerList_t, bool>>;
117 template <
class classT, auto funcT,
typename dataT>
121 registerHandlerBase(trigger_time, priority,
true, handler);
125 template <
class classT, auto funcT>
129 registerHandlerBase(trigger_time, priority,
true, handler);
133 template <
class classT, auto funcT,
typename dataT>
137 registerHandlerBase(trigger_time, priority,
false, handler);
141 template <
class classT, auto funcT>
145 registerHandlerBase(trigger_time, priority,
false, handler);
152 HandlerVectorMap_t handler_vector_map_;
158 void registerHandlerBase(SimTime_t trigger_time,
int priority,
bool relative,
OneShot::HandlerBase* handler);
164 void scheduleNextOneShot();
169 void oneshotCallback(TimeStamp_t time,
OneShot* oneshot);
void setPriority(uint64_t priority)
Set the priority of the Activity.
Definition activity.h:200
void setDeliveryTime(SimTime_t time)
Set the time for which this Activity should be delivered.
Definition activity.h:147
Manages the OneShot actions for the core.
Definition oneshotManager.h:100
void registerAbsoluteHandler(SimTime_t trigger_time, int priority, classT *obj)
Add a handler to be called on this OneShot Event.
Definition oneshotManager.h:142
void registerRelativeHandler(SimTime_t trigger_time, int priority, classT *obj, dataT metadata)
Add a handler to be called on this OneShot Event.
Definition oneshotManager.h:118
void registerRelativeHandler(SimTime_t trigger_time, int priority, classT *obj)
Add a handler to be called on this OneShot Event.
Definition oneshotManager.h:126
void registerAbsoluteHandler(SimTime_t trigger_time, int priority, classT *obj, dataT metadata)
Add a handler to be called on this OneShot Event.
Definition oneshotManager.h:134
OneShotManager(Simulation *sim)
Create a new One Shot for a specified time that will callback the handler function.
Definition oneshotManager.cc:37
Definition oneshotManager.h:39
void execute() override
Function which will be called when the time for this Activity comes to pass.
Definition oneshotManager.cc:24
SSTHandlerBase< void, void > HandlerBase
Base handler for OneShot callbacks.
Definition oneshotManager.h:45
SSTHandler< void, void, classT, dataT, funcT > Handler
Used to create checkpointable handlers for OneShot.
Definition oneshotManager.h:66
Base template for handlers which take a class defined argument.
Definition ssthandler.h:79
Base template for the class.
Definition ssthandler.h:1102
Main control class for a SST Simulation.
Definition simulation.h:121