X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7ba9ddb2180684b3fe1ab8e70b854d3f8558d8dc..ab319b7200020e1280da137a8c77bf57b2588714:/src/simix/MailboxImpl.hpp diff --git a/src/simix/MailboxImpl.hpp b/src/simix/MailboxImpl.hpp index 0b27bd8cd4..4fb573ff7a 100644 --- a/src/simix/MailboxImpl.hpp +++ b/src/simix/MailboxImpl.hpp @@ -18,17 +18,24 @@ namespace simix { /** @brief Rendez-vous point datatype */ class MailboxImpl { -public: - MailboxImpl(const char* name) + explicit MailboxImpl(const char* name) : piface_(this), name_(xbt_strdup(name)), comm_queue(MAX_MAILBOX_SIZE), done_comm_queue(MAX_MAILBOX_SIZE) { } + +public: ~MailboxImpl() { xbt_free(name_); } + static MailboxImpl* byNameOrNull(const char* name); + static MailboxImpl* byNameOrCreate(const char* name); + void setReceiver(s4u::ActorPtr actor); + void push(smx_activity_t synchro); + void remove(smx_activity_t activity); simgrid::s4u::Mailbox piface_; // Our interface char* name_; - boost::circular_buffer_space_optimized comm_queue; + boost::intrusive_ptr permanent_receiver; //process which the mailbox is attached to + boost::circular_buffer_space_optimized comm_queue; boost::circular_buffer_space_optimized done_comm_queue;//messages already received in the permanent receive mode }; } @@ -36,11 +43,4 @@ public: XBT_PRIVATE void SIMIX_mailbox_exit(); -XBT_PRIVATE smx_mailbox_t SIMIX_mbox_create(const char* name); -XBT_PRIVATE smx_mailbox_t SIMIX_mbox_get_by_name(const char* name); -XBT_PRIVATE void SIMIX_mbox_remove(smx_mailbox_t mbox, smx_activity_t comm); -XBT_PRIVATE void SIMIX_mbox_push(smx_mailbox_t mbox, smx_activity_t synchro); - -XBT_PRIVATE void SIMIX_mbox_set_receiver(smx_mailbox_t mbox, smx_actor_t proc); - #endif /* SIMIX_MAILBOXIMPL_H */