Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simix::Synchro: Factorize the refcounting for child classes
[simgrid.git] / src / simix / SynchroComm.hpp
index bdcc41e..6d4d7b7 100644 (file)
@@ -20,12 +20,14 @@ namespace simgrid {
 namespace simix {
 
   XBT_PUBLIC_CLASS Comm : public Synchro {
+    ~Comm();
   public:
     Comm(e_smx_comm_type_t type);
     void suspend();
     void resume();
     void cancel();
     double remains();
+    void cleanupSurf(); // FIXME: make me protected
 
     e_smx_comm_type_t type;         /* Type of the communication (SIMIX_COMM_SEND or SIMIX_COMM_RECEIVE) */
     smx_mailbox_t mbox = nullptr;   /* Rendez-vous where the comm is queued */
@@ -35,8 +37,7 @@ namespace simix {
                                        (comm.mbox set to NULL when the communication is removed from the mailbox
                                        (used as garbage collector)) */
 #endif
-    int refcount = 1;               /* Number of processes involved in the cond */
-    int detached = 0;               /* If detached or not */
+    bool detached = false;          /* If detached or not */
 
     void (*clean_fun)(void*);       /* Function to clean the detached src_buf if something goes wrong */
     int (*match_fun)(void*,void*,smx_synchro_t);  /* Filter function used by the other side. It is used when
@@ -58,7 +59,7 @@ namespace simix {
     void *dst_buff = nullptr;
     size_t src_buff_size;
     size_t *dst_buff_size;
-    unsigned copied = 0;          /* whether the data were already copied */
+    bool copied = false;          /* whether the data were already copied */
 
     void* src_data;                 /* User data associated to communication */
     void* dst_data;