Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
populate s4u::mailbox
authorMartin Quinson <martin.quinson@loria.fr>
Sat, 23 Apr 2016 20:20:29 +0000 (22:20 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Sat, 23 Apr 2016 20:21:44 +0000 (22:21 +0200)
The evil plan is to use that instead of smx_mailbox_t

include/simgrid/forward.h
include/simgrid/s4u/mailbox.hpp
src/s4u/s4u_mailbox.cpp

index b1eab3a..549c031 100644 (file)
@@ -13,6 +13,7 @@ namespace simgrid {
   namespace s4u {
     class As;
     class Host;
+    class Mailbox;
   }
   namespace surf {
     class Resource;
@@ -26,8 +27,9 @@ namespace simgrid {
   }
 }
 
-typedef simgrid::s4u::Host simgrid_Host;
 typedef simgrid::s4u::As simgrid_As;
+typedef simgrid::s4u::Host simgrid_Host;
+typedef simgrid::s4u::Mailbox simgrid_Mailbox;
 typedef simgrid::surf::Cpu surf_Cpu;
 typedef simgrid::surf::NetCard surf_NetCard;
 typedef simgrid::surf::Link Link;
@@ -36,8 +38,9 @@ typedef simgrid::trace_mgr::trace tmgr_Trace;
 
 #else
 
-typedef struct simgrid_Host simgrid_Host;
 typedef struct simgrid_As   simgrid_As;
+typedef struct simgrid_Host simgrid_Host;
+typedef struct simgrid_Mailbox simgrid_Mailbox;
 typedef struct surf_Cpu surf_Cpu;
 typedef struct surf_NetCard surf_NetCard;
 typedef struct surf_Resource surf_Resource;
@@ -45,8 +48,9 @@ typedef struct Link Link;
 typedef struct Trace tmgr_Trace;
 #endif
 
-typedef simgrid_Host* sg_host_t;
 typedef simgrid_As *AS_t;
+typedef simgrid_Host* sg_host_t;
+typedef simgrid_Mailbox* sg_mbox_t;
 
 typedef surf_Cpu *surf_cpu_t;
 typedef surf_NetCard *sg_netcard_t;
index 5914a41..2a75091 100644 (file)
@@ -38,6 +38,8 @@ protected:
 public:
   /** Retrieve the mailbox associated to the given string */
   static Mailbox *byName(const char *name);
+  /** Returns whether the mailbox contains queued communications */
+  bool empty();
 
 private:
   smx_mailbox_t inferior_;
@@ -47,4 +49,7 @@ private:
 
 #endif
 
+XBT_PUBLIC(sg_mbox_t) sg_mbox_by_name(const char*name);
+XBT_PUBLIC(int) sg_mbox_is_empty(sg_mbox_t mbox);
+
 #endif /* SIMGRID_S4U_MAILBOX_HPP */
index 3b8c0ba..6e497d8 100644 (file)
@@ -36,3 +36,14 @@ s4u::Mailbox *s4u::Mailbox::byName(const char*name) {
   }
   return res;
 }
+
+bool s4u::Mailbox::empty() {
+  return nullptr == simcall_mbox_get_head(inferior_);
+}
+
+sg_mbox_t sg_mbox_by_name(const char*name){
+  return s4u::Mailbox::byName(name);
+}
+int sg_mbox_is_empty(sg_mbox_t mbox) {
+  return mbox->empty();
+}