| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- .\"/*
- .\" * Copyright (c) 2010 Red Hat, Inc.
- .\" *
- .\" * All rights reserved.
- .\" *
- .\" * Author: Jan Friesse <jfriesse@redhat.com>
- .\" * Author: Christine Caulfield <ccaulfie@redhat.com>
- .\" *
- .\" * This software licensed under BSD license, the text of which follows:
- .\" *
- .\" * Redistribution and use in source and binary forms, with or without
- .\" * modification, are permitted provided that the following conditions are met:
- .\" *
- .\" * - Redistributions of source code must retain the above copyright notice,
- .\" * this list of conditions and the following disclaimer.
- .\" * - Redistributions in binary form must reproduce the above copyright notice,
- .\" * this list of conditions and the following disclaimer in the documentation
- .\" * and/or other materials provided with the distribution.
- .\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
- .\" * contributors may be used to endorse or promote products derived from this
- .\" * software without specific prior written permission.
- .\" *
- .\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- .\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- .\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- .\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- .\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- .\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- .\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- .\" * THE POSSIBILITY OF SUCH DAMAGE.
- .\" */
- .TH CPG_MODEL_INITIALIZE 3 2010-04-07 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual"
- .SH NAME
- cpg_model_initialize \- Create a new connection to the CPG service
- .SH SYNOPSIS
- .B #include <corosync/cpg.h>
- .sp
- .BI "cs_error_t cpg_model_initialize(cpg_handle_t *" handle ", cpg_model_t " model ", cpg_model_data_t *" model_data ", void *" context ");
- .SH DESCRIPTION
- The
- .B cpg_model_initialize
- function is used to initialize a connection to the closed process groups API.
- .PP
- Each application may have several connections to the CPG API. Each application
- uses the
- .I handle
- argument to uniquely identify the connection. The
- .I handle
- argument is then used in other function calls to identify the connection to be used
- for communication with the CPG service.
- .PP
- Argument
- .I model
- is used to explicitly choose set of callbacks and internal parameters. Currently only model
- .I CPG_MODEL_V1
- is defined.
- .PP
- Callbacks and internal parameters are passed by
- .I model_data
- argument. This is casted pointer (idea is similar as in sockaddr function) to one of structures
- corresponding to chosen model. Currently only
- .I cpg_model_v1_data_t
- is needed.
- .SH MODEL_V1
- The
- .I MODEL_V1
- is backwards compatible with original callbacks initialized by
- .I cpg_initialize
- but new callback
- .I cpg_totem_confchg_fn
- is defined.
- .PP
- Every time an CPG event occurs within the joined group, one of the callbacks specified by the argument
- .I callbacks
- is called. The callback functions are described by the following type definitions:
- .PP
- .PP
- .IP
- .RS
- .ne 18
- .nf
- .ta 4n 20n 32n
- 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);
- typedef void (*cpg_totem_confchg_fn_t) (
- cpg_handle_t handle,
- struct cpg_ring_id ring_id,
- uint32_t member_list_entries,
- const uint32_t *member_list);
- .ta
- .fi
- .RE
- .IP
- .PP
- .PP
- The
- .I cpg_model_v1_data_t
- structure is defined as:
- .IP
- .RS
- .ne 18
- .nf
- .PP
- typedef struct {
- cpg_model_t model;
- cpg_deliver_fn_t cpg_deliver_fn;
- cpg_confchg_fn_t cpg_confchg_fn;
- cpg_totem_confchg_fn_t cpg_totem_confchg_fn;
- unsigned int flags;
- } cpg_model_v1_data_t;
- .ta
- .fi
- .RE
- .IP
- .PP
- When a configuration change occurs or a message is to be delivered one of the callbacks
- is called from the
- .B cpg_dispatch()
- function. If a configuration change occurs,
- .I cpg_confchg_fn
- is called. If a delivery of a message occurs,
- .I cpg_deliver_fn
- is called.
- When totem membership change occurs,
- .I cpg_totem_confchg_fn
- is called. You can OR
- .I CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF
- constant to flags to get callback after first confchg event.
- The
- .I cpg_address
- structure is defined
- .IP
- .RS
- .ne 18
- .nf
- .PP
- struct cpg_address {
- unsigned int nodeid;
- unsigned int pid;
- unsigned int reason;
- };
- .ta
- .fi
- .RE
- .IP
- .PP
- 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.
- .PP
- .IP
- .RS
- .ne 18
- .nf
- .PP
- 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()
- .ta
- .fi
- .RE
- .IP
- .PP
- The
- .I cpg_ring_id
- structure is defined
- .IP
- .RS
- .ne 18
- .nf
- .PP
- struct cpg_ring_id {
- uint32_t nodeid;
- uint64_t seq;
- };
- .ta
- .fi
- .RE
- .IP
- .PP
- where
- .I nodeid
- is if of node of current Totem leader and seq is increasing number.
- .PP
- .SH RETURN VALUE
- This call returns the CS_OK value if successful, otherwise an error is returned.
- .PP
- .SH ERRORS
- The errors are undocumented.
- .SH "SEE ALSO"
- .BR cpg_overview (3),
- .BR cpg_initialize (3),
- .BR cpg_finalize (3),
- .BR cpg_fd_get (3),
- .BR cpg_dispatch (3),
- .BR cpg_join (3),
- .BR cpg_leave (3),
- .BR cpg_mcast_joined (3),
- .BR cpg_membership_get (3)
- .BR cpg_zcb_alloc (3)
- .BR cpg_zcb_free (3)
- .BR cpg_zcb_mcast_joined (3)
- .BR cpg_context_get (3)
- .BR cpg_context_set (3)
- .BR cpg_local_get (3)
- .BR cpg_model_initialize (3)
- .PP
|