5 #include "simix/private.h"
6 #include "msg/datatypes.h"
10 #define MAX_ALIAS_NAME ((size_t)260)
13 * Initialization of the mailbox module.
16 MSG_mailbox_mod_init(void);
19 * Terminaison of the mailbox module.
22 MSG_mailbox_mod_exit(void);
25 /*! \brief MSG_mailbox_new - create a new mailbox.
27 * The function MSG_mailbox_new creates a new mailbox identified by the key specified
28 * by the parameter alias and add it in the global dictionary.
30 * \param alias The alias of the mailbox to create.
32 * \return The newly created mailbox.
35 MSG_mailbox_new(const char *alias);
37 /*! \brief MSG_mailbox_create - create a new mailbox.
39 * The function MSG_mailbox_new creates a new mailbox identified by the key specified
40 * by the parameter alias and add it in the global dictionary but doesn't add it in
41 * the global dictionary. Typicaly, this type of mailbox is associated with a channel.
43 * \param alias The alias of the mailbox to create.
45 * \return The newly created mailbox.
48 MSG_mailbox_create(const char *alias);
50 /* \brief MSG_mailbox_free - release a mailbox from the memory.
52 * The function MSG_mailbox_free release a mailbox from the memory but does
53 * not remove it from the dictionary.
55 * \param mailbox The mailbox to release.
57 * \see MSG_mailbox_destroy.
60 MSG_mailbox_free(void* mailbox);
62 /* \brief MSG_mailbox_get_by_alias - get a mailbox from its alias.
64 * The function MSG_mailbox_get_by_alias returns the mailbox associated with
65 * the key specified by the parameter alias. If the mailbox does not exists,
66 * the function create it.
68 * \param alias The alias of the mailbox to return.
70 * \return The mailbox associated with the alias specified as parameter
71 * or a new mailbox if the key does not match.
74 MSG_mailbox_get_by_alias(const char* alias);
76 /* \brief MSG_mailbox_get_by_channel - get a mailbox of the specified host from its channel.
78 * The function MSG_mailbox_get_by_channel returns the mailbox of the specified host
79 * from the channel specified by the parameter channel. If the mailbox does not exists,
82 * \param host The host containing he mailbox to get.
83 * \param channel The channel used to identify the mailbox.
85 * \return The mailbox of the specified host associated the channel specified as parameter.
89 MSG_mailbox_get_by_channel(m_host_t host, m_channel_t channel);
91 /*! \brief MSG_mailbox_get_alias - get the alias associated with the mailbox.
93 * The function MSG_mailbox_get_alias returns the alias of the mailbox specified
94 * by the parameter mailbox.
96 * \param mailbox The mailbox to get the alias.
98 * \return The alias of the mailbox specified by the parameter mailbox.
101 MSG_mailbox_get_alias(msg_mailbox_t mailbox);
103 /*! \brief MSG_mailbox_get_cond - get the simix condition of a mailbox.
105 * The function MSG_mailbox_get_cond returns the condition of the mailbox specified
106 * by the parameter mailbox.
108 * \param mailbox The mailbox to get the condition.
110 * \return The simix condition of the mailbox specified by the parameter mailbox.
113 MSG_mailbox_get_cond(msg_mailbox_t mailbox);
115 /*! \brief MSG_mailbox_set_cond - set the simix condition of a mailbox.
117 * The function MSG_mailbox_set_cond set the condition of the mailbox specified
118 * by the parameter mailbox.
120 * \param mailbox The mailbox to set the condition.
121 * \param cond The new simix condition of the mailbox.
125 MSG_mailbox_set_cond(msg_mailbox_t mailbox, smx_cond_t cond);
127 /*! \brief MSG_mailbox_get_hostname - get the name of the host owned a mailbox.
129 * The function MSG_mailbox_get_hostname returns name of the host owned the mailbox specified
130 * by the parameter mailbox.
132 * \param mailbox The mailbox to get the name of the host.
134 * \return The name of the host owned the mailbox specified by the parameter mailbox.
137 MSG_mailbox_get_hostname(msg_mailbox_t mailbox);
139 /*! \brief MSG_mailbox_set_hostname - set the name of the host owned a mailbox.
141 * The function MSG_mailbox_set_hostname sets the name of the host owned the mailbox specified
142 * by the parameter mailbox.
144 * \param mailbox The mailbox to set the name of the host.
145 * \param hostname The name of the owner of the mailbox.
149 MSG_mailbox_set_hostname(msg_mailbox_t mailbox, const char* hostname);
152 /*! \brief MSG_mailbox_is_empty - test if a mailbox is empty.
154 * The function MSG_mailbox_is_empty tests if a mailbox is empty (contains no msg task).
156 * \param mailbox The mailbox to get test.
158 * \return The function returns 1 if the mailbox is empty. Otherwise the function
162 MSG_mailbox_is_empty(msg_mailbox_t mailbox);
164 /*! \brief MSG_mailbox_put - put a task in a mailbox.
166 * The MSG_mailbox_put puts a task in a specified mailbox.
168 * \param mailbox The mailbox where put the task.
169 * \param task The task to put in the mailbox.
172 MSG_mailbox_put(msg_mailbox_t mailbox, m_task_t task);
174 /*! \brief MSG_mailbox_remove - remove a task from a mailbox.
176 * The MSG_mailbox_remove removes a task from a specified mailbox.
178 * \param mailbox The mailbox concerned by this operation.
179 * \param task The task to remove from the mailbox.
182 MSG_mailbox_remove(msg_mailbox_t mailbox, m_task_t task);
184 /*! \brief MSG_mailbox_get_head - get the task at the head of a mailbox.
186 * The MSG_mailbox_get_head returns the task at the head of the mailbox.
187 * This function does not remove the task from the mailbox (contrary to
188 * the function MSG_mailbox_pop_head).
190 * \param mailbox The mailbox concerned by the operation.
192 * \return The task at the head of the mailbox.
195 MSG_mailbox_get_head(msg_mailbox_t mailbox);
197 /*! \brief MSG_mailbox_pop_head - get the task at the head of a mailbox
198 * and remove it from it.
200 * The MSG_mailbox_pop_head returns the task at the head of the mailbox
201 * and remove it from it.
203 * \param mailbox The mailbox concerned by the operation.
205 * \return The task at the head of the mailbox.
208 MSG_mailbox_pop_head(msg_mailbox_t mailbox);
210 /*! \brief MSG_mailbox_get_first_host_task - get the first msg task
211 * of a specified mailbox, sended by a process of a specified host.
213 * \param mailbox The mailbox concerned by the operation.
214 * \param host The msg host of the process that has sended the
217 * \return The first task in the mailbox specified by the
218 * parameter mailbox and sended by a process located
219 * on the host specified by the parameter host.
222 MSG_mailbox_get_first_host_task(msg_mailbox_t mailbox, m_host_t host);
224 /*! \brief MSG_mailbox_get_count_host_waiting_tasks - Return the number of tasks
225 waiting to be received in a mailbox and sent by a host.
227 * \param mailbox The mailbox concerned by the operation.
228 * \param host The msg host containing the processes that have sended the
231 * \return The number of tasks in the mailbox specified by the
232 * parameter mailbox and sended by all the processes located
233 * on the host specified by the parameter host.
236 MSG_mailbox_get_count_host_waiting_tasks(msg_mailbox_t mailbox, m_host_t host);
242 #endif /* !SMX_MAILBOX_H */