X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/33de1a2d4e728a5b7d9b0419d6c854f9c963ee6c..5a3ad5e2d39b008be6c9467aa387b8358076f12c:/include/gras/messages.h diff --git a/include/gras/messages.h b/include/gras/messages.h index bba9f467e4..fd26c022ed 100644 --- a/include/gras/messages.h +++ b/include/gras/messages.h @@ -61,15 +61,19 @@ SG_BEGIN_DECL() /** \brief Opaque type */ typedef struct s_gras_msgtype *gras_msgtype_t; - void gras_msgtype_declare (const char *name, + XBT_PUBLIC void gras_msgtype_declare (const char *name, gras_datadesc_type_t payload); - void gras_msgtype_declare_v(const char *name, + XBT_PUBLIC void gras_msgtype_declare_v(const char *name, short int version, gras_datadesc_type_t payload); - gras_msgtype_t gras_msgtype_by_name (const char *name); - gras_msgtype_t gras_msgtype_by_namev(const char *name, short int version); - gras_msgtype_t gras_msgtype_by_id(int id); + XBT_PUBLIC gras_msgtype_t gras_msgtype_by_name (const char *name); + XBT_PUBLIC gras_msgtype_t gras_msgtype_by_name_or_null (const char *name); + XBT_PUBLIC gras_msgtype_t gras_msgtype_by_namev(const char *name, short int version); + XBT_PUBLIC gras_msgtype_t gras_msgtype_by_id(int id); + + XBT_PUBLIC void gras_msgtype_dumpall(void); + /** @} */ /** @defgroup GRAS_msg_cb Callback declaration and use @@ -88,11 +92,12 @@ typedef struct s_gras_msgtype *gras_msgtype_t; * @{ */ - /** \brief Context of callbacks (opaque structure) */ + /** \brief Context of callbacks (opaque structure, created by the middleware only, never by user) */ typedef struct s_gras_msg_cb_ctx *gras_msg_cb_ctx_t; -gras_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx); - +XBT_PUBLIC void gras_msg_cb_ctx_free(gras_msg_cb_ctx_t ctx) ; +XBT_PUBLIC gras_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx); + /** \brief Type of message callback functions. * * \param expeditor: a socket to contact who sent this message @@ -111,11 +116,30 @@ gras_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx); typedef int (*gras_msg_cb_t)(gras_msg_cb_ctx_t ctx, void *payload); - void gras_cb_register (gras_msgtype_t msgtype, gras_msg_cb_t cb); - void gras_cb_unregister(gras_msgtype_t msgtype, gras_msg_cb_t cb); + XBT_PUBLIC void gras_cb_register (gras_msgtype_t msgtype, gras_msg_cb_t cb); + XBT_PUBLIC void gras_cb_unregister(gras_msgtype_t msgtype, gras_msg_cb_t cb); /** @} */ +/** @defgroup GRAS_msg_exchange Message exchange + * @ingroup GRAS_msg + * + */ +/** @{ */ + + + XBT_PUBLIC void gras_msg_send(gras_socket_t sock, + gras_msgtype_t msgtype, + void *payload); + XBT_PUBLIC void gras_msg_wait(double timeout, + gras_msgtype_t msgt_want, + gras_socket_t *expeditor, + void *payload); + XBT_PUBLIC void gras_msg_handleall(double period); + XBT_PUBLIC void gras_msg_handle(double timeOut); + +/** @} */ + /** @defgroup GRAS_msg_rpc RPC specific functions * @ingroup GRAS_msg * @@ -133,44 +157,34 @@ gras_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx); /** @{ */ /* declaration */ -void gras_msgtype_declare_rpc(const char *name, +XBT_PUBLIC void gras_msgtype_declare_rpc(const char *name, gras_datadesc_type_t payload_request, gras_datadesc_type_t payload_answer); -void gras_msgtype_declare_rpc_v(const char *name, +XBT_PUBLIC void gras_msgtype_declare_rpc_v(const char *name, short int version, gras_datadesc_type_t payload_request, gras_datadesc_type_t payload_answer); /* client side */ -void gras_msg_rpccall(gras_socket_t server, +XBT_PUBLIC void gras_msg_rpccall(gras_socket_t server, double timeOut, gras_msgtype_t msgtype, void *request, void *answer); +XBT_PUBLIC gras_msg_cb_ctx_t +gras_msg_rpc_async_call(gras_socket_t server, + double timeOut, + gras_msgtype_t msgtype, + void *request); +XBT_PUBLIC void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx, + void *answer); /* server side */ -void gras_msg_rpcreturn(double timeOut, gras_msg_cb_ctx_t ctx,void *answer); +XBT_PUBLIC void gras_msg_rpcreturn(double timeOut, gras_msg_cb_ctx_t ctx,void *answer); /** @} */ -/** @defgroup GRAS_msg_exchange Message exchange - * @ingroup GRAS_msg - * - */ -/** @{ */ - - - void gras_msg_send(gras_socket_t sock, - gras_msgtype_t msgtype, - void *payload); - void gras_msg_wait(double timeout, - gras_msgtype_t msgt_want, - gras_socket_t *expeditor, - void *payload); - void gras_msg_handle(double timeOut); - -/** @} */ /** @defgroup GRAS_msg_exchangeadv Message exchange (advanced interface) * @ingroup GRAS_msg * @@ -212,12 +226,18 @@ typedef struct { typedef int (*gras_msg_filter_t)(gras_msg_t msg,void *ctx); - void gras_msg_wait_ext(double timeout, - gras_msgtype_t msgt_want, - gras_socket_t expe_want, - gras_msg_filter_t filter, - void *filter_ctx, - gras_msg_t msg_got); +XBT_PUBLIC void gras_msg_wait_ext(double timeout, + gras_msgtype_t msgt_want, + gras_socket_t expe_want, + gras_msg_filter_t filter, + void *filter_ctx, + gras_msg_t msg_got); + +XBT_PUBLIC void gras_msg_wait_or(double timeout, + xbt_dynar_t msgt_want, + gras_msg_cb_ctx_t *ctx, + int *msgt_got, + void *payload); /* @} */