evs_mcast_groups(3)

evs_mcast_groups3

Multicast a message to selected groups

Usage

#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);

Overview

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.

Return value

This call returns the EVS_OK value if successful, otherwise an error is returned.

Errors

The errors are undocumented.

Releases

4 releases since Debian 5.0 (Lenny); the text changed 2 times.

  1. 5.0
  2. 6.0–7
  3. 8

From corosync-dev 1.4.6-1.1 in Debian 8 (Jessie). Parsed by carta from the page's man source.