Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
819d9f1ffe1c2e8587708bc3508f0e22e4666ff9
[simgrid.git] / src / gras / Msg / msg_interface.h
1 /* messaging - high level communication (send/receive messages)             */
2
3 /* module's public interface exported within GRAS, but not to end user.     */
4
5 /* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved.            */
6
7 /* This program is free software; you can redistribute it and/or modify it
8  * under the terms of the license (GNU LGPL) which comes with this package. */
9
10 #ifndef GRAS_MSG_INTERFACE_H
11 #define GRAS_MSG_INTERFACE_H
12
13 #include "gras/transport.h"
14 #include "xbt/fifo.h"
15
16 /*
17  * Data of this module specific to each process
18  * (used by sg_process.c to check some usual errors at the end of the simulation)
19  * FIXME: it could be cleaned up ?
20  */
21 typedef struct {
22   /* set headers */
23   unsigned int ID;
24   char *name;
25   unsigned int name_len;
26
27   /* queue storing the msgs got while msg_wait'ing for something else. Reuse them ASAP. */
28   xbt_dynar_t msg_queue;        /* elm type: s_gras_msg_t */
29
30   /* queue storing the msgs without callback got when handling. Feed them to wait() */
31   xbt_dynar_t msg_waitqueue;    /* elm type: s_gras_msg_t */
32
33   /* registered callbacks for each message */
34   xbt_dynar_t cbl_list;         /* elm type: gras_cblist_t */
35
36   /* registered timers */
37   xbt_dynar_t timers;           /* elm type: s_gras_timer_t */
38
39   /* queue storing the msgs that have to received and the process synchronization made (wait the surf action done) */
40   xbt_fifo_t msg_to_receive_queue;      /* elm type: s_gras_msg_t */
41   xbt_fifo_t msg_to_receive_queue_meas; /* elm type: s_gras_msg_t */
42   xbt_queue_t msg_received;
43
44 } s_gras_msg_procdata_t, *gras_msg_procdata_t;
45
46
47 void gras_msg_send_namev(gras_socket_t sock,
48                          const char *namev, void *payload);
49 void gras_msg_listener_awake(void);
50 void gras_msg_listener_close_socket(int sd);
51
52 #define GRAS_PROTOCOL_VERSION '\1';
53
54
55 #endif /* GRAS_MSG_INTERFACE_H */