12#ifndef SST_CORE_EVENT_H
13#define SST_CORE_EVENT_H
15#include "sst/core/activity.h"
16#include "sst/core/sst_types.h"
17#include "sst/core/ssthandler.h"
60 template <
typename classT,
typename dataT =
void>
71#if __SST_DEBUG_EVENT_TRACKING__
82#ifdef __SST_DEBUG_EVENT_TRACKING__
84 virtual void printTrackingInfo(
const std::string& header,
Output& out)
const override
87 "%s Event first sent from: %s:%s (type: %s) and last received by %s:%s (type: %s)\n", header.c_str(),
88 first_comp.c_str(), first_port.c_str(), first_type.c_str(), last_comp.c_str(), last_port.c_str(),
92 const std::string& getFirstComponentName() {
return first_comp; }
93 const std::string& getFirstComponentType() {
return first_type; }
94 const std::string& getFirstPort() {
return first_port; }
95 const std::string& getLastComponentName() {
return last_comp; }
96 const std::string& getLastComponentType() {
return last_type; }
97 const std::string& getLastPort() {
return last_port; }
99 void addSendComponent(
const std::string& comp,
const std::string& type,
const std::string& port)
101 if ( first_comp ==
"" ) {
107 void addRecvComponent(
const std::string& comp,
const std::string& type,
const std::string& port)
118 Activity::serialize_order(ser);
120#ifdef __SST_DEBUG_EVENT_TRACKING__
139 friend class NullEvent;
140 friend class RankSync;
141 friend class ThreadSync;
145 void execute(
void)
override;
159 inline void setDeliveryInfo(LinkId_t tag, uintptr_t delivery_info)
162 this->delivery_info = delivery_info;
166 inline Link* getDeliveryLink() {
return reinterpret_cast<Link*
>(delivery_info); }
169 inline LinkId_t getTag(
void)
const {
return getOrderTag(); }
180 uintptr_t delivery_info;
183 static std::atomic<uint64_t> id_counter;
185#ifdef __SST_DEBUG_EVENT_TRACKING__
186 std::string first_comp;
187 std::string first_type;
188 std::string first_port;
189 std::string last_comp;
190 std::string last_type;
191 std::string last_port;
213 const ComponentId_t comp_id;
214 const std::string comp_name;
215 const std::string comp_type;
216 const std::string port_name;
219 ComponentId_t
id,
const std::string& cname,
const std::string& ctype,
const std::string& pname) :
Base class for all Activities in the SST Event Queue.
Definition: activity.h:46
void setPriority(uint64_t priority)
Set the priority of the Activity.
Definition: activity.h:181
void setOrderTag(uint32_t tag)
Sets the order tag.
Definition: activity.h:150
uint32_t getOrderTag() const
Return the order tag associated with this activity.
Definition: activity.h:153
ImplementVirtualSerializable(SST::Activity) void setQueueOrder(uint64_t order)
Set a new Queue order.
Definition: activity.h:205
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition: serializer.h:35
Empty Event.
Definition: event.h:201
Base class for Events - Items sent across links to communicate between components.
Definition: event.h:35
std::pair< uint64_t, int > id_type
Type definition of unique identifiers.
Definition: event.h:64
id_type generateUniqueId()
Generates an ID that is unique across ranks, components and events.
Definition: event.cc:45
virtual Event * clone()
Clones the event in for the case of a broadcast.
Definition: event.cc:35
static const id_type NO_ID
Constant, default value for id_types.
Definition: event.h:66
Output object provides consistent method for outputting data to stdout, stderr and/or sst debug file.
Definition: output.h:52
void output(uint32_t line, const char *file, const char *func, const char *format,...) const
Output the message with formatting as specified by the format parameter.
Definition: output.h:182
Handlers with 1 handler defined argument to callback from caller.
Definition: ssthandler.h:171
Handler class with user-data argument.
Definition: ssthandler.h:220