evs_join − Multicast a message to selected groups |
#include <sys/uio.h> #include <corosync/evs.h> int evs_mcast_groups(evs_handle_t handle, evs_guraantee_t guarantee, evs_group_t *groups, int group_entries, struct iovec *iovec, int iov_len); |
The evs_mcast_groups(3) function multicasts a message to all the groups specified in the arguemnt groups. Messages are delivered to all processors in the system that are described by the current configuration. The argument handle describes a handle created with evs_initialize(3). The argument guarantee requests a delivery guarantee for the message to be sent. The evs_guarantee_t type is defined by: |
typedef enum { |
EVS_TYPE_UNORDERED, |
/* not implemented */ |
||
EVS_TYPE_FIFO, /* same as agreed */ |
|||
EVS_TYPE_AGREED, |
/* implemented */ |
||
EVS_TYPE_SAFE /* not implemented */ |
} evs_guarantee_t; |
The meanings of the evs_guarantee_t typedef are: |
EVS_GUARANTEE_UNORDERED |
Messages are guaranteed to be delivered, but with no particular order. This mode is unimplemented in the EVS library. |
EVS_GUARANTEE_FIFO |
Messages are guaranteed to be delivered in first sent first delivery order from one one. In fact, this guarantee is actually the AGREED guarantee. |
EVS_GUARANTEE_AGREED |
All processors must agree on the order of delivery. If a message is sent from two or more processors at about the same time, the delivery will occur in the same order to all processors. |
EVS_GUARANTEE_SAFE |
All processors must agree on the order of delivery. Further all processors must have a copy of the message before any delivery takes place. This mode is unimplemented in the EVS library. |
The groups argument is of the type evs_group_t which is defined by the structure: |
typedef struct { |
char key[32]; |
} evs_groups_t; |
The group_entries argument describes the number of entries in the group argument. The iovec argument describes the scatter/gather list which is used to transmit a message. This is a standard socket structure described by: |
struct iovec { |
void *iov_base; /* Pointer to data. */ |
||
unsigned int iov_len; /* Length of data. */ |
}; |
The iovlen argument describes the number of entires in the iovec argument. |
This call returns the EVS_OK value if successful, otherwise an error is returned. |
The errors are undocumented. |
evs_overview(8), evs_initialize(3), evs_finalize(3), evs_fd_get(3), evs_dispatch(3), evs_leave(3), evs_join(3), evs_mcast_joined(3), evs_mmembership_get(3) evs_context_get(3) evs_context_set(3) |