Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
CPG_INITIALIZE(3)  Corosync Cluster Engine Programmer's Manual CPG_INITIALIZE(3)

NAME
     cpg_initialize - Create a new connection to the CPG service

SYNOPSIS
     #include <corosync/cpg.h>

     int cpg_initialize(cpg_handle_t *handle, cpg_callbacks_t *callbacks);

DESCRIPTION
     The  cpg_initialize  function  is	used  to  initialize a connection to the
     closed process groups API. This function is deprecated  and  cpg_model_ini-
     tialize should be used in newly written code.

     Each  application may have several connections to the CPG API.  Each appli-
     cation uses the handle argument to uniquely identify the  connection.   The
     handle  argument  is then used in other function calls to identify the con-
     nection to be used for communication with the CPG service.

     Every time an CPG event occurs within the joined group, one  of  the  call-
     backs  specified  by  the argument callbacks is called.  The callback func-
     tions are described by the following type definitions:

	    typedef void (*cpg_deliver_fn_t) (
		    cpg_handle_t handle,
		    const struct cpg_name *group_name,
		    uint32_t nodeid,
		    uint32_t pid,
		    const void *msg,
		    size_t msg_len);

	    typedef void (*cpg_confchg_fn_t) (
		    cpg_handle_t handle,
		    const struct cpg_name *group_name,
		    const struct cpg_address *member_list, size_t member_list_entries,
		    const struct cpg_address *left_list, size_t left_list_entries,
		    const struct cpg_address *joined_list, size_t joined_list_entries);

     The callbacks argument is of the type:

	    typedef struct {
		    cpg_deliver_fn_t cpg_deliver_fn;
		    cpg_confchg_fn_t cpg_confchg_fn;
	    } cpg_callbacks_t;

     When a configuration change occurs or a message is to be delivered  one  of
     the  callbacks is called from the cpg_dispatch() function.  If a configura-
     tion change occurs, cpg_confchg_fn is called.  If a delivery of  a  message
     occurs, cpg_deliver_fn is called.

     The cpg_address structure is defined

	    struct cpg_address {
		    unsigned int nodeid;
		    unsigned int pid;
		    unsigned int reason;
	    };

     where  nodeid  is a 32 bit unique node identifier, pid is the process ID of
     the process that has joined/left the group or sent the message, and  reason
     is  an  integer  code  indicating	why the node joined/left the group (this
     value is not set for the member_list items).

	    CPG_REASON_JOIN	 - the process joined a group using cpg_join().
	    CPG_REASON_LEAVE	 - the process left a group using cpg_leave()
	    CPG_REASON_NODEDOWN  - the process left a group because the node left the cluster.
	    CPG_REASON_NODEUP	 - the process joined a group because it was already a member of a group on a node that has just joined the cluster
	    CPG_REASON_PROCDOWN  - the process left a group without calling cpg_leave()
	    CPG_REASON_UNDEFINED - a special value used for the member_list items

RETURN VALUE
     This call returns the CS_OK value if successful, otherwise an error is  re-
     turned.

ERRORS
     The errors are undocumented.

SEE ALSO
     cpg_overview(3),	 cpg_initialize(3),    cpg_finalize(3),   cpg_fd_get(3),
     cpg_dispatch(3), cpg_join(3), cpg_leave(3),  cpg_mcast_joined(3),	cpg_mem-
     bership_get(3)   cpg_zcb_alloc(3)	cpg_zcb_free(3)  cpg_zcb_mcast_joined(3)
     cpg_context_get(3) cpg_context_set(3)  cpg_local_get(3)  cpg_model_initial-
     ize(3)

     CS_ERR_TRY_AGAIN Resource temporarily unavailable

     CS_ERR_INVALID_PARAM Invalid argument

     CS_ERR_ACCESS Permission denied

     CS_ERR_LIBRARY The connection failed

     CS_ERR_INTERRUPT System call interrupted by a signal

     CS_ERR_NOT_SUPPORTED The requested protocol/functionality not supported

     CS_ERR_MESSAGE_ERROR Incorrect auth message received

     CS_ERR_NO_MEMORY Not enough memory to complete the requested task

corosync Man Page		   2019-04-16		       CPG_INITIALIZE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cpg_initialize&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help