-/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
class PajeEvent {
Container* container_;
Type* type_;
-protected:
- Container* get_container() { return container_; }
public:
+ static xbt::signal<void(PajeEvent&)> on_creation;
+ static xbt::signal<void(PajeEvent&)> on_destruction;
+
double timestamp_;
e_event_type eventType_;
std::stringstream stream_;
PajeEvent(Container* container, Type* type, double timestamp, e_event_type eventType);
- virtual ~PajeEvent() = default;
- virtual void print();
+ virtual ~PajeEvent();
+
+ Container* get_container() const { return container_; }
+ Type* get_type() const { return type_; }
+
+ virtual void print() = 0;
void insert_into_buffer();
};
: PajeEvent::PajeEvent(container, type, timestamp, event_type), value_(value)
{
}
- void print() override;
+ void print() override { stream_ << " " << value_; }
};
class StateEvent : public PajeEvent {
std::string filename = "(null)";
int linenumber = -1;
#endif
- TIData* extra_;
+ std::unique_ptr<TIData> extra_;
public:
+ static xbt::signal<void(StateEvent&)> on_destruction;
StateEvent(Container* container, Type* type, e_event_type event_type, EntityValue* value, TIData* extra);
+ ~StateEvent() { on_destruction(*this); }
+ bool has_extra() { return extra_ != nullptr; }
void print() override;
};
int size_ = -1;
public:
- LinkEvent(Container* container, Type* type, e_event_type event_type, Container* sourceContainer, std::string value,
- std::string key, int size)
+ LinkEvent(Container* container, Type* type, e_event_type event_type, Container* sourceContainer,
+ const std::string& value, const std::string& key, int size)
: PajeEvent(container, type, SIMIX_get_clock(), event_type)
, endpoint_(sourceContainer)
, value_(value)
public:
NewEvent(double timestamp, Container* container, Type* type, EntityValue* value)
- : simgrid::instr::PajeEvent::PajeEvent(container, type, timestamp, PAJE_NewEvent), value(value)
+ : PajeEvent::PajeEvent(container, type, timestamp, PAJE_NewEvent), value(value)
{
}
void print() override;
};
-}
-}
+} // namespace instr
+} // namespace simgrid
#endif