#ifndef _SIMIX_SYNCHRO_HPP
#define _SIMIX_SYNCHRO_HPP
+
+#include <string>
+#include <list>
+
+#include <xbt/base.h>
#include "simgrid/forward.h"
#ifdef __cplusplus
namespace simgrid {
namespace simix {
- class Synchro {
+ XBT_PUBLIC_CLASS Synchro {
public:
Synchro();
virtual ~Synchro();
- e_smx_state_t state; /* State of the synchro */
- char *name = nullptr; /* synchro name if any */
- xbt_fifo_t simcalls; /* List of simcalls waiting for this synchro */
- char *category = nullptr; /* For instrumentation */
+ e_smx_state_t state = SIMIX_WAITING; /* State of the synchro */
+ std::string name; /* synchro name if any */
+ std::list<smx_simcall_t> simcalls; /* List of simcalls waiting for this synchro */
virtual void suspend()=0;
virtual void resume()=0;
+ virtual void post() =0; // What to do when a simcall terminates
void ref();
void unref();
private:
- int refcount=1;
+ int refcount = 1;
};
}} // namespace simgrid::simix
#else /* not C++ */